UINavigationBar
にUIInterfaceBuilder
を立ち寄りました。このビューをモーダルで表示し、UIBackBarButton
を最後のビューに戻したいだけです。宣言されたUINavigationBar
のアウトレットとプロパティがあります。 viewDidLoad
メソッドで、次のようにUIBackButton
を作成できると思いました。
UIBarButtonItem *backButton =
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleBordered
target:self
action:@selector(goBack)];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
しかし、UIBackBarButtonItem
にUINavigationBar
が表示されません。私のUINavigationBar
がこれにUIBackBarButtonItem
を追加しようとしていることを知っているとは思わないので、私はここで何か間違っていると思います。代わりにNSArray
を作成してボタンを配置し、代わりにNavigationBarのsetItemsを実行する必要がありますか?
同様に、navigationItemプロパティの機能とUINavigationBar
のsetItemsの機能が混同されています。任意の助けいただければ幸いです。ありがとう!
BackBarButtonItemを追加しないモーダルビューでBack Button Itemを設定しようとしています。これにより、ボタン(または、そのための任意の種類の戻るボタン)が表示されなくなります。 backBarButtonItemは主に、新しいビューコントローラー(一番上のアイテム)をプッシュしたときに親(下の次のアイテム)から追加された戻るボタンを持つプッシュされたビューコントローラーで使用するためのものです。 Apple UINavigationItem Documentation は言う:
このアイテムがナビゲーションバーのバックアイテムである場合(トップアイテムの下の次のアイテムである場合)は、ナビゲーションバーの戻るボタンとして表される場合があります。このプロパティを使用して、戻るボタンを指定します。設定するバックバーボタン項目のターゲットとアクションはnilにする必要があります。デフォルト値は、ナビゲーションアイテムのタイトルを表示するバーボタンアイテムです。
希望どおりに左側に戻るボタンを表示するには、変更してみてください
self.navigationItem.backBarButtonItem = backButton;
に
self.navigationItem.leftBarButtonItem = backButton;
このような呼び出しをビューコントローラから行う
{
NextViewController* vcRootView = [[NextViewController alloc] initWithNibName:@"NextView" bundle:[NSBundle mainBundle]];
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:vcRootView];
[vcRootView release];
[self.navigationController presentModalViewController:navController animated:YES];
[navController release];
}
nextViewControllerを呼び出し側ビューのモーダルビューとして表示し、NextViewControllerにはそのためのnavigationControllerがあります。
NextViewController実装ファイルで必要なのはこれだけです
- (void)viewDidLoad {
[super viewDidLoad];
UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self
action:@selector(barButtonBackPressed:)];
self.navigationItem.leftBarButtonItem = backButton;
[backButton release];
}
-(void)barButtonBackPressed:(id)sender{
[self dismissModalViewControllerAnimated:YES];
}
modalviewを閉じるための[戻る]ボタンがあります。それが役に立てば幸い。
以下のコードスニペットを使用します。
//Add button to NavigationController
UIBarButtonItem *backButton =
[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@“back”, @"")
style:UIBarButtonItemStylePlain
target:self
action:@selector(goBack)];
self.navigationItem.leftBarButtonItem = backButton;
//Perform action on back Button
- (void) goBack { // Go back task over-here
}
利用可能なさまざまなスタイルのタイプは次のとおりです。
UIBarButtonItemStylePlain, UIBarButtonItemStyleBordered, UIBarButtonItemStyleDone
このセッターは、新しいUIBarButtonItemを作成せずに使用できます。
[self.navigationItem.leftBarButtonItem setAction:@selector(doBackButton:)];
[self.navigationItem.leftBarButtonItem setTarget:self];