iphone - UIToolbar 中的持久 UIBarButtonItem?

标签 iphone objective-c cocoa uikit

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

我遇到了一个问题,似乎插入导航 Controller 堆栈的每个 UIViewController 都应该有自己的一组项目供工具栏显示,因此,“状态”项目淡出并返回每个 View 转换。

有没有办法让工具栏中有一个持久项目?我还尝试在导航 Controller 的初始化程序中添加该项目(我为这种方法创建了 UINavigationController 的子类),但仍然不行。

最佳答案

不要使用导航 Controller 的工具栏,而是直接将其添加到窗口并调整导航 Controller View 框架的大小以避免出现这种情况。然后,该单个全局工具栏将始终可见。

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

  1. 打开应用委托(delegate)的 .h 文件。
  2. IBOutlet UIToolbar * Toolbar; 添加到应用委托(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. -dealloc方法中添加释放toolbar的代码。
  6. 打开MainWindow.xib。
  7. 打开 window 。
  8. 将工具栏拖到窗口底部。
  9. 将工具栏连接到应用委托(delegate)的工具栏导出
  10. 现在设置工具栏 - 添加您需要的任何项目,然后在应用委托(delegate)中创建您需要的任何 socket 和操作并将它们连接起来。

由于工具栏是窗口的一部分,而不是导航 Controller 的一部分,因此导航 Controller 不应接触它。

关于iphone - UIToolbar 中的持久 UIBarButtonItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1072080/

相关文章:

objective-c - 从工具栏项中删除焦点

iphone:如何同步 2 个 NSMutableArrays 的内容?

macos - Apple 帮助手册教程

cocoa - 用户移动文件后,NSURL 安全范围的书签仍然有效吗?

iphone - iPhone OS 中的标签栏有多高?

ios - iOS/Objective-C:将自定义对象的NSArray转换为JSON

ios - 仅当所有文本字段均已填写时才启用 Swift 中的按钮

objective-c - NSViewController 中未声明“viewDidLoad”?

iphone - 拒绝等待开发者发布的应用程序

iphone编程: collision detection of a UIImageView and an animation