1

TabBarView にナビゲーション バーがあります。ナビゲーション バーに rightBarButtonItem とタイトルが必要です。なぜこうなった?私のコードは viewDidLoad メソッドにあります。タイトルが左ボタン アイテムとして表示されるのはなぜですか? それをクリックすると、ビューを移動しているように動作し、右のバー ボタンの項目がなくなり、タイトルが正しくなります。

UINavigationBar *myNavBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320,40)];
myNavBar.barStyle = UIBarStyleBlackOpaque;

[self.view addSubview:myNavBar];

//Creates the title.
UINavigationItem *title = [[UINavigationItem alloc] initWithTitle:@"My Title"];

[myNavBar pushNavigationItem:title animated:NO];

//Creates the button.
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self
action:@selector(showMail:)];

UINavigationItem *navItem = [[UINavigationItem alloc] initWithTitle:nil];
navItem.rightBarButtonItem = button;

// add the UINavigationItem to the navigation bar
[myNavBar pushNavigationItem:navItem animated:NO];
4

2 に答える 2

4

UINavigationItem には、タイトルとバー ボタンの項目が含まれます。複数の navigationItems を作成していますが、代わりに単一の UINavigationItem のプロパティを割り当てる必要があります。

ヘッダー ファイルを見ると、必要なものがすべて含まれていることがわかります。

NS_CLASS_AVAILABLE_IOS(2_0) @interface UINavigationItem : NSObject <NSCoding> {
 @private
    NSString        *_title;
    NSString        *_backButtonTitle;
    UIBarButtonItem *_backBarButtonItem;
    NSString        *_prompt;
    NSInteger        _tag;
    id               _context;
    UINavigationBar *_navigationBar;
    UIView          *_defaultTitleView;
    UIView          *_titleView;
    UIView          *_backButtonView;
    NSArray         *_leftBarButtonItems;
    NSArray         *_rightBarButtonItems;
    NSArray         *_customLeftViews;
    NSArray         *_customRightViews;
    BOOL             _hidesBackButton;
    BOOL             _leftItemsSupplementBackButton;
    UIImageView     *_frozenTitleView;
}

単一のインスタンスを割り当てるだけです。複数の UINavigationItems を割り当てるべきではありません。

于 2013-05-06T20:33:37.607 に答える