UINavigationController的每个页面上的UIToolbar

Rob*_*bin 11 iphone objective-c uitoolbar uiviewcontroller uinavigationcontroller

我有一个在UINavigationController上运行的应用程序.现在我想在每个屏幕的底部添加一个UIToolbar元素.底部的工具栏应该可以为当前显示的ViewController进行自定义.我的第一个想法是简单地将工具栏添加到navigationController视图并标记它,在viewController中我认为我将能够检索UIToolbar元素.我有以下代码:

在我的AppDelegate中:

// Get instance of Toolbar  (navController is an instance of UINavigationController and TOOLBAR_TAG a constant)
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 440, 320, 40)];
toolbar.tag = TOOLBAR_TAG;
[navController.view addSubview:toolbar];
Run Code Online (Sandbox Code Playgroud)

在我的viewController中,我试过这个:

UIToolbar *toolbar = [self.navigationController.view viewWithTag:TOOLBAR_TAG];
toolbar.barStyle = UIBarStyleBlack;
Run Code Online (Sandbox Code Playgroud)

然而,这给了我一个错误,说我的情况下工具栏是一个"UILayoutContainerView"对象,而不是UIToolbar对象.因此,这个想法似乎是一个死胡同.

别人怎么解决这个问题?

Can*_*der 42

UINavigationController已经有了一个工具栏.只是用

[self.navigationController setToolbarHidden:NO];
Run Code Online (Sandbox Code Playgroud)

在最顶层的视图控制器和

[self setToolbarItems:items];
Run Code Online (Sandbox Code Playgroud)

在所有视图控制器中,其中项目是NSArray该视图控制器的工具栏项目.

编辑:至于为什么你的解决方案不起作用:你TOOLBAR_TAG可能不是唯一的,这就是为什么你得到另一个子视图.但正如我所说,你应该使用包含的工具栏.