我和backBarButtonItem有个奇怪的问题。我希望在整个应用程序中替换它的标题为" back“,并在大多数-viewDidLoad事件中替换back按钮,但在其他视图中它不起作用,并显示上一个视图的名称。有没有人有同样的问题?
备注:替换backBarButtonItem的方法是实例化UIBarButtonItem并将其设置为viewController.navigationIten.backBarButtonItem属性的标准方法。
发布于 2012-05-17 15:44:21
好吧,我终于找到了解决这个问题的办法。
如果您希望应用程序的任何backBarButtonItem具有相同的标题,一个好的方法是子类化UINavigationController并覆盖- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated来替换back按钮。
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
UIBarButtonItem *_backButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"BackButtonLabel", "")
style:UIBarButtonItemStyleDone
target:nil
action:nil];
viewController.navigationItem.backBarButtonItem = _backButton;
_backButton = nil;
[_backButton release];
[super pushViewController:viewController animated:animated];
}这样,应用程序中的每个后退按钮都将具有相同的标题。
我希望这对其他任何人都有帮助。
发布于 2012-05-17 00:06:58
backBarButtonItem不设置当前视图中显示的后退按钮,它设置导航到当前视图的后退按钮,即下一个视图中的后退按钮。
这是有意义的,因为back按钮的标题通常是前一个视图控制器的标题。
如果要直接设置导航栏中的左按钮,请使用self.navigationItem.leftBarButtonItem。
发布于 2012-05-17 01:28:24
在分配下一个视图控制器对象之后,当你从当前视图推送视图时,只需放在下面一行
YourViewController *objView = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
self.navigationItem.title=@"Back";
[self.navigationController pushViewController:objView animated:YES];您的下一个视图将显示Back Button...:)
https://stackoverflow.com/questions/10622217
复制相似问题