UIToolbar中的持久UIBarButtonItem?

Tim*_*Tim 2 iphone cocoa objective-c uikit

我一直在开发一个使用UIToolbar的iPhone应用程序(在UINavigationController的上下文中),在屏幕底部显示一个小状态图标.工具栏最终还会有与之关联的动作图标(想想邮件应用程序).

我遇到了一个问题,即每个推到导航控制器堆栈上的UIViewController都应该有自己的一组项目供工具栏显示,结果,"状态"项目淡出并重新进入每个视图转换.

有没有办法在工具栏中有一个持久性项目?我也尝试在导航控制器的初始化程序中添加项目(我为此方法划分了UINavigationController),但它仍然没有.

Bre*_*don 7

不使用导航控制器的工具栏,而是直接在窗口中添加一个,并调整导航控制器视图框架的大小以避免它.然后,该单个全局工具栏将始终可见.

如果您正在使用基于导航的应用程序模板,并且正在使用Interface Builder,则应执行以下步骤:

  1. 打开你的app delegate的.h文件.
  2. 添加IBOutlet UIToolbar * toolbar;到app delegate的实例变量.
  3. 切换到.m文件.
  4. 找到在[window addSubview:[navigationController view]];其后读取和添加的行:
    CGRect frame = navigationController.view.frame;
    frame.size.height -= toolbar.frame.size.height;
    navigationController.view.frame = frame;
  5. 添加要toolbar-dealloc方法中发布的代码.
  6. 打开MainWindow.xib.
  7. 打开窗户.
  8. 将工具栏拖到窗口底部.
  9. 将工具栏连接到app delegate的工具栏插座
  10. 现在设置工具栏 - 添加您需要的任何项目,然后在应用程序委托中创建您需要的任何插座和操作并连接它们.

由于工具栏是窗口的一部分,而不是导航控制器的一部分,导航控制器不应触摸它.