navigationItem.backBarButtonItemが機能していませんか?前のメニューがまだボタンとして表示されているのはなぜですか?
ドリルダウンナビゲーションコントローラーで[戻る]ボタンをカスタマイズしようとしています。
私の1つのビューコントローラーには、Addボタンがあり、コードによってプログラムで新しいUIViewController
が生成されます。
- (void)add:(id)sender
{
MyAddViewController *addController = [[MyAddViewController alloc] initWithNibName:@"MyAddViewController" bundle:nil];
[self.navigationController pushViewController:addController animated:YES];
[addController release];
}
これは機能し、追加ボタンをクリックすると、新しいビューにドリルダウンします。 MyAddViewController.m
のviewDidLoad
メソッドの内部:
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
しかし、これは機能していません。ナビゲーションコントローラーの戻るボタンは、スタック上の前のビューのコントローラーのtitleのままです。ラインは何もしないようです。私は何か見落としてますか?
ありがとう
これは、self.navigationItem.backBarButtonItem
を持つviewControllerの後の各子でのみ機能します。
self.navigationItem.backBarButtonItem
は、ビューコントローラによって押されたビューに表示される戻るボタン用です。そのため、その行を前のビューコントローラに移動する必要があります。
backBarButtonItem
とleftBarButtonItem
を混同している。 UINavigationItem
の- backBarButtonItem
docs から:
このアイテムがナビゲーションバーのバックアイテムである場合(トップアイテムの下の次のアイテムである場合)は、ナビゲーションバーの戻るボタンとして表される場合があります。このプロパティを使用して、戻るボタンを指定します。設定するバックバーボタン項目のターゲットとアクションはnilにする必要があります。デフォルト値は、ナビゲーションアイテムのタイトルを表示するバーボタンアイテムです。
したがって、変更する場合:
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
に:
self.navigationItem.leftBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
期待通りの効果が得られると思います。
backBarButtonItem
を置き換えることはできませんが、leftBarButtonItem
を使用して上書きできます。ただし、新しいボタンが戻るボタンと同じように動作するようにするには、新しいボタンのターゲットとアクションを次のように設定する必要があります。
- (void)dismissMyView {
[self.navigationController popViewControllerAnimated:YES];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"Quit" style: UIBarButtonItemStyleBordered
target:self action:@selector(dismissMyView)];
}
ViewController AがViewController Bをプッシュしている間にバックバーボタンタイトルを設定したい場合は、「self.navigationItem.backBarButtonItem = ..」を設定する必要があります。