【问题标题】:Toolbar in Navigation Controller导航控制器中的工具栏
【发布时间】:2011-11-28 23:20:54
【问题描述】:

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

 [self.navigationController setToolbarHidden:NO];

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

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

谢谢

【问题讨论】:

    标签: iphone objective-c ios uinavigationcontroller


    【解决方案1】:

    引用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];
    }
    

    【讨论】:

    • @rob mayoff,如何将 ViewControllerThatNeedsAToolbar 设置为当前视图? self.view 不起作用。 . .另外,我是否也在其中添加按钮?最后,我需要调用它吗?
    【解决方案2】:

    如果你稍微修改一下上面的例子,你可以很容易地让它在当前视图控制器的 viewDidLoad 方法中设置工具栏项时自动显示工具栏:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多