0

我有一个嵌入在UINavigationController中的UIViewControllerrootViewController现在已包含一些按钮leftBarButtonItems当推送新的UIViewcontroller时,保留leftBarButtonItems

现在,当我在UINavigationController的顶推新UIViewController我希望新UIViewController保留现有leftBarButtonItems扩展了Back - 按钮。

现在情况如下:当我推新的UIViewController时,现有的leftBarButtonItems消失,只有Back -Button可见。

回答

1

每个UIViewController都有自己的“navigationItem”属性,该属性充当该viewcontroller的导航栏表示。当您将按钮添加到特定UIViewController的navigationItem时,它们的作用域被限制在添加它们的viewcontroller中,并且它们不会保留到其他viewcontroller中。

基本上,您必须在加载时将按钮添加到每个viewcontroller的navigationItem。你可以通过编写添加一个方法来完成这个工作,使其更加简单,而不是你的UIViewControllers。当你触摸每个按钮时会发生什么情况,可能是特定于viewcontroller的,所以你必须考虑touch操作如何反馈给相关的viewcontroller。也许引入某种NavigationBarDelegate协议或什么?

+0

这种探索是有道理的 – DanEEStar 2012-07-19 13:29:01

0

我发现什么似乎是一个奇怪的方式来解决这个问题,当推动同一个视图控制器的多个实例上一个细节视图控制器,我认为会工作类似。推新视图控制器之前,我用这个:(浏览器是我的新的视图控制器)

self.browser.navigationItem setLeftBarButtonItem:self.detailViewController.navigationItem.leftBarButtonItem animated:YES]; // Sets popover view controller button. 
    [self.detailViewController.navigationController pushViewController:self.browser animated:YES]; 

这可能不是做一个很好的方式,但它似乎在我的处境工作。

相关问题