导航控制器中的工具栏

时间:2011-11-28 23:20:54

标签: iphone objective-c ios uinavigationcontroller

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

 [self.navigationController setToolbarHidden:NO];

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

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

由于

2 个答案:

答案 0 :(得分:5)

引用UINavigationController Class Reference

  

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

因此,请为导航控制器设置委托。在您的代理navigationController:willShowViewController:animated:中,执行以下操作:

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

答案 1 :(得分:1)

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

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