web-dev-qa-db-ja.com

iOS-UINavigationControllerが複数の正しいアイテムを追加していますか?

私はUINavigationControllerを持っています。ナビゲーションバーの右側に複数のボタンを追加しようとしています。どうすればこれを達成できますか?どのようなボタンが必要ですか? UIBarButtonまたはUINavigationItem

33
aryaxt

開発者リファレンスを読んで、ナビゲーションバーの追加のボタンに不快感を与えることは確かです。今はその一節が見つかりません。私自身はそれをしていませんが、あなたがする必要があることを正確に概説しているように見えるこのリンクを見つけました: (http://www.mattdipasquale.com/blog/2010/11/02/how-to-add -multiple-uibarbuttonitems-to-uinavigationbar /)

ナビゲーションコントローラーのツールバープロパティの使用を検討しましたか?

15
Dean Davids

IOS5以降では、ナビゲーションボタンのrightBarButtonItems(複数形に注意)プロパティにバーボタンアイテムの配列を割り当てることができます。

80
jrturton

私はXcode 4.5、iOS 6でJRTurtonsの回答を使用し、次のように実装しました。

// Two buttons at the right side of nav bar
UIBarButtonItem *addAttachButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addAttachmentClicked:)];
UIBarButtonItem *sendButton = [[UIBarButtonItem alloc] initWithTitle:LS(@"Send") style:UIBarButtonItemStyleBordered target:self action:@selector(sendClicked:)];
self.navigationItem.rightBarButtonItems = @[addAttachButton,sendButton];

ただし、UIBarButtonSystemItemPageCurlはそのように機能しないことを述べておかなければなりません。

28
wzbozon

xCodeでナビゲーションコントローラーにデザインを追加するのは簡単です。

uIViewをシーンに追加し、必要なボタンをUIViewに追加してから、UIViewをnavigationControllerの適切なスペースにドラッグアンドドロップします。

1
mihai

実際には少し鉱石のハックさえありますが、同時にこれを行うよりクリーンな方法:UINavigationItemでカテゴリを定義するだけです:

UINavigationItem + Toolbars.h:

@interface UINavigationItem (Toolbars)

@property (nonatomic, retain) IBOutlet UIToolbar * rightToolBar;
@property (nonatomic, retain) IBOutlet UIToolbar * leftToolBar;

- (void)setRightToolBar:(UIToolbar *)_rightToolBar;
- (UIToolbar *)rightToolBar;
- (void)setLeftToolBar:(UIToolbar *)_leftToolBar;
- (UIToolbar *)leftToolBar;

@end

UINavigationItem + Toolbars.m:

#import "UINavigationItem+Toolbars.h"

@implementation UINavigationItem (Toolbars)

- (void)setRightToolBar:(UIToolbar *)_rightToolBar {
    self.rightBarButtonItems = _rightToolBar.items;
}

- (UIToolbar *)rightToolBar {
    return nil;
}

- (void)setLeftToolBar:(UIToolbar *)_leftToolBar {
    self.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:_leftToolBar] autorelease];
}

- (UIToolbar *)leftToolBar {
    return nil;
}

@end

その後、IB設定でアウトレットをツールバーに割り当て(ツールバーを作成するだけ)、ナビゲーション項目に表示されるボタンをお楽しみください。

0
Anton

Xcode 7.1では(おそらくそれ以前にも)、ドラッグするだけでUINavigationBarの右側または左側に複数のアイテムを追加できます。正しい場所にドラッグすると、そのアイテムが配置される場所を示す小さな垂直バーが表示されます挿入されます。

0
Rick