2011-05-30 26 views
0

我想要做这样的事情。所有的控制器都在导航控制器上。 ViewController 1 - > ViewController 2(不要显示后退按钮,通过推动自动出现) - > ViewController 3(导航栏的显示后退按钮) - > ViewController 4(再次隐藏Bar按钮)。Hide - 取消隐藏UINavigationBar的backBarButton?

我试着将标题设置为ViewController1为空,但后退按钮不会出现在应用程序的任何位置。此外,我已经尝试将按钮设置为零,然后在导航堆栈上推送ViewController2。但没有按预期工作。有人知道如何做到这一点。注 - 我想要默认的后退按钮,当我们在堆栈上按下viewController而不是左侧的酒吧按钮项时出现。如果没有选择,那么我更喜欢左栏按钮项目的方法。

回答

1

hidesBackButton方法显示后推杆按钮被推出的动画。不过,就像你说的那样,这看起来不太合适。肮脏的选项转发将在父视图控制器中执行此操作。

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    self.title = @"Title"; 
} 

- (void)viewWillDisappear:(BOOL)animated 
{ 
    [super viewWillDisappear:animated]; 
    self.title = @""; 
} 

原来的答案

你需要把它添加到你想要隐藏的后退按钮的视图控制器。很自我解释。

self.navigationItem.hidesBackButton = YES; 
+0

这隐藏了整个应用程序中的后退按钮。即使当我将它设置为真时,返回按钮也不会出现。我已经尝试了这种方法。 – 2011-05-30 06:25:33

+0

你是从哪里设定的?我刚刚测试过它,它似乎按预期工作。 – 2011-05-30 06:31:06

+0

我已经在ViewController2的viewDidAppear方法 – 2011-05-30 06:32:51

7

我以前做过类似的事情。在控制器中,那将推动你不想把这个后退按钮无论你做你pushViewController:

myNextViewController.navigationItem.hidesBackButton = YES; 
[self.navigationController pushViewController:myNextViewController animated:YES]; 

你的情况,这将是第一和第三viewControllers在接下来的视图控制器堆栈。

+0

这也隐藏了下一个控制器的后退按钮。在我的情况下,ViewController3也不显示回按钮 – 2011-05-30 10:56:45

+0

如果在推送之前放入:myThirdViewController.navigationItem.hidesBackButton = NO; – Ben 2011-05-30 11:02:29

+0

我也试过这个,但它没有工作。你可以自己尝试。 – 2011-05-31 04:18:19