2011-11-28 106 views
3

我使用下面的代码创建一个导航控制器工具栏:工具栏在导航控制器

[self.navigationController setToolbarHidden:NO]; 

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

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

感谢

回答

4

引述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]; 
} 
+0

+1正确答案 – Till

+0

@rob mayoff,如何将ViewControllerThatNeedsAToolbar设置为当前视图? self.view不起作用。 。 。另外,我也在那里添加按钮?最后,我需要呼吁它吗? –

+0

你需要尝试一些事情并找出有效的方法。 –

1

如果你稍微修改上面的例子,你可以轻松地让它所以当工具栏项目在当前视图控制器的viewDidLoad方法设置工具栏会自动显示:

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