新しい ViewController をナビゲーション コントローラー スタックにプッシュすると、「戻る」ボタンが前のコントローラーのタイトルになります。
戻るボタンのテキストをデフォルトの name-of-last-controller ではなく "Back" に変更するにはどうすればよいですか?
新しい ViewController をナビゲーション コントローラー スタックにプッシュすると、「戻る」ボタンが前のコントローラーのタイトルになります。
戻るボタンのテキストをデフォルトの name-of-last-controller ではなく "Back" に変更するにはどうすればよいですか?
これは、前のページのタイトル以外のもので戻るボタンを作成する適切な方法です
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @"Your Title";
self.navigationItem.backBarButtonItem = barButton;
私の理解では、次のとおりです。
self.navigationItem.backBarButtonItem.title = @"Your Title";
前のページのナビゲーションバーのタイトルをこれにしますが、これはあなたが望むものではありません。
ナビゲーション コントローラーにカスタム ボタンを作成する必要があります。ルート ビュー コントローラーのviewDidLoadに次のコードを追加します。
UIBarButtonItem * tempButtonItem = [[[ UIBarButtonItem alloc] init] autorelease];
tempButtonItem .title = @"Back";
self.navigationItem.backBarButtonItem = tempButtonItem ;
ルート ビュー コントローラーにナビゲーション バー ボタンを設定すると、プッシュされたビューに適切な戻るボタンが表示されます。
新しいビュー コントローラーをプッシュする前に、ナビゲーション コントローラーの現在のビュー コントローラーのタイトルを変更できます。
self.title = @"Custom Title";
[self pushViewController: newViewController ...];
and in the navigation controller's delegate class
-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
if([viewController class] == [OldViewController class]) {
viewController.title = @"Your previous title";
}
}
実際には、メイン ビュー コントローラーの のタイトルにタイトルを設定できますnavigationItem
。基本的に、それぞれUIViewController
に小さなスタブUINavigationItem
があり、そのビューを 内で参照する方法に関するメタデータが含まれていますUINavigationController
。デフォルトでは、そのメタデータはUIViewController
それ自体にフォールバックします。
'self' がUIViewController
内に表示されるビューであると仮定すると、次のようUINavigationController
に設定されます。
self.navigationItem.title = @"My Custom Title"