添加 UIToolbar 作为 UINavigationItem 错误

Posted

技术标签:

【中文标题】添加 UIToolbar 作为 UINavigationItem 错误【英文标题】:add a UIToolbar as a UINavigationItem error 【发布时间】:2012-06-28 17:28:04 【问题描述】:

我有一个位于视图底部的 UIToolbar。当用户在 iPad 上时,我想将工具栏添加到导航控制器的右侧,因为会有空间。

我添加了这段代码:

- (void)viewDidLoad
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
            UIBarButtonItem *toolBarItem = [[UIBarButtonItem alloc]initWithCustomView:toolBar];
            self.navigationItem.rightBarButtonItem = toolBarItem;
        
[super viewDidLoad];
    

但应用程序因错误而崩溃:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. UINavigationBar's implementation of -layoutSubviews needs to call super.'

我不知道为什么这是一个问题,因为我以前见过这种方法。顺便说一句,工具栏项目是在界面构建器中添加的,而不是使用按钮的 NSArray,这会有所不同吗?

谢谢!

【问题讨论】:

你通常在哪里声明 UIBarButtonItem? 请向我们展示工具栏分配和初始化代码。 你有没有 [super viewDidLoad];在你的 viewDidLoad 方法中? 你创建的工具栏在哪里? @luyuan 该工具栏作为 iPhone 版本屏幕底部的常规工具栏存在。对于 iPad 版本,我想将工具栏合并到顶部的导航栏中。我在界面生成器的工具栏中添加了 uibarbuttonitems。 【参考方案1】:

UIBarButtonItem 是工具栏中的控件之一。你确定你在做什么?我听不懂你在说什么,但似乎你正试图在 UIBarButtonItem 中添加一个工具栏。应该是相反的,UIbarButtonItem 位于 UIToolbar 内

【讨论】:

UIToolbar 包含几个 UIBarButtonItem,但我试图将 UIToolbar 放在另一个 UIBarButtonItem 中,以便将其添加到导航栏。我认为没有更简单的方法。 更简单的方法是创建一个自定义的UIView控件,你可以任意设置框架。您要做的是 UIToolbar Inception!

以上是关于添加 UIToolbar 作为 UINavigationItem 错误的主要内容,如果未能解决你的问题,请参考以下文章

UINavigation 控制器 UIViewController 和 UItoolbar 作为子视图问题

以编程方式在 UINavigationBar 下方的 UIToolbar 中添加 UISegmentedControl

使用 UIToolbar 帮助修复 UIViewController

如何将 UILabel 放在 UIToolbar 上?

自定义 UIToolBar 的正确方法是啥?

为多个 UITextField 使用 inputAccessoryView UIToolbar