我一直在开发一个 iPhone 应用程序,它使用 UIToolbar(在 UINavigationController 的上下文中)在屏幕底部显示一个小状态图标。工具栏最终还将有与之关联的操作图标(想想邮件应用程序)。
我遇到了一个问题,似乎插入导航 Controller 堆栈的每个 UIViewController 都应该有自己的一组项目供工具栏显示,因此,“状态”项目淡出并返回每个 View 转换。
有没有办法让工具栏中有一个持久项目?我还尝试在导航 Controller 的初始化程序中添加该项目(我为这种方法创建了 UINavigationController 的子类),但仍然不行。
最佳答案
不要使用导航 Controller 的工具栏,而是直接将其添加到窗口并调整导航 Controller View 框架的大小以避免出现这种情况。然后,该单个全局工具栏将始终可见。
如果您使用基于导航的应用程序模板,并且使用 Interface Builder,则应执行以下步骤:
- 打开应用委托(delegate)的 .h 文件。
- 将
IBOutlet UIToolbar * Toolbar;
添加到应用委托(delegate)的实例变量。 - 切换到 .m 文件。
- 找到
[window addSubview:[navigationController view]];
行并在其后添加:CGRect frame = navigationController.view.frame;
frame.size.height -=toolbar.frame.size.height;
navigationController.view.frame =frame;
- 在
-dealloc
方法中添加释放toolbar
的代码。 - 打开MainWindow.xib。
- 打开 window 。
- 将工具栏拖到窗口底部。
- 将工具栏连接到应用委托(delegate)的工具栏导出
- 现在设置工具栏 - 添加您需要的任何项目,然后在应用委托(delegate)中创建您需要的任何 socket 和操作并将它们连接起来。
由于工具栏是窗口的一部分,而不是导航 Controller 的一部分,因此导航 Controller 不应接触它。
关于iphone - UIToolbar 中的持久 UIBarButtonItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1072080/