导航控制器中的工具栏

我正在使用以下代码在导航控制器中创建工具栏:

[self.navigationController setToolbarHidden:NO]; //Create a button NSArray *toolbarItems = [NSArray arrayWithObjects: [[UIBarButtonItem alloc] initWithTitle:@"Help" style:UIBarButtonItemStyleBordered target:self action:@selector(helpButton:)] ,nil]; 

唯一的问题是只要有导航控制器(多个其他视图),工具栏就可见。 有没有办法只将工具栏限制在一个视图?

谢谢

引用UINavigationController类参考

默认情况下隐藏导航工具栏,但您可以通过调用导航控制器对象的setToolbarHidden:animated:方法将其显示在导航界面中。 如果并非所有视图控制器都支持工具栏项,则委托对象可以调用此方法以在后续推送和弹出操作期间切换工具栏的可见性。

因此,请为导航控制器设置委托。 在你的委托的navigationController:willShowViewController:animated: ,做这样的事情:

 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { BOOL shouldShowToolbar = (viewController == theViewControllerThatNeedsAToolbar); [navigationController setToolbarHidden:shouldShowToolbar animated:animated]; } 

如果稍微修改上面的示例,您可以轻松地进行操作,以便在当前视图控制器的viewDidLoad方法中设置工具栏项时工具栏将自动显示:

 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { BOOL shouldHide = [viewController.toolbarItems count] == 0; [navigationController setToolbarHidden:shouldHide animated:animated]; }