内部不一致异常,在iOS 8的某些*版本中使用自定义导航项

时间:2015-10-22 00:13:43

标签: ios swift uinavigationcontroller swift2 uinavigationitem

好吧,所以我遇到了一个奇怪的问题,我在这里看看是否有人可以帮我解释一下。

背景

我的应用程序旨在支持iOS 8。 我的所有导航栏都嵌入在UINavigationController中,并且viewDidLoad

中的每个栏都设置如下(或多或少)
let newNavItem = UINavigationItem()
    newNavItem.leftBarButtonItem = menuButtonItem
    newNavItem.rightBarButtonItem = addBarItem
    newNavItem.title = "Home"
    self.navigationController?.navigationBar.setItems([newNavItem], animated: false)

问题

当用户第一次注册时,他们会被设计为允许他们选择要上传的个人资料图片或选择大学的屏幕,具体取决于他们的注册方式(使用Facebook或不使用Facebook) )。在我的所有iOS 9测试中,以下是我的主屏幕,它有一个导航栏,上面添加了按钮,这样可以正常工作。按钮已设置并按预期响应。但是,在iOS 8.0.2和iOS 8.1中,当用户经历此segue时,会抛出NSInternalInconsistencyException,错误是

  

*由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法调用   setItems:animated:直接在由a管理的UINavigationBar上   控制器。*

然而,这是一个奇怪的部分,这个问题在iOS 8.4中没有出现,正如我所说,我还没有遇到过iOS 9的问题。我还没有测试8.2和8.3,但没有这样做,我仍然不确定为什么某些版本的iOS会因此异常而崩溃,而其他版本则没有。希望有人能够指出我正确的方向。

1 个答案:

答案 0 :(得分:2)

我找到了问题的解决方案,它涉及为每个NavigationBar更改上述代码,我必须将其更改为以下内容:

self.navigationItem.setLeftBarButtonItem(menuButtonItem, animated: true)
self.navigationItem.setRightBarButtonItem(addButtonItem, animated: true)
self.title = "Home"

我把这个放在这里以防其他人出现同样的问题并且没有解决方案,但我仍然感到困惑的是为什么仅在某些版本上抛出异常iOS,如果有人能告诉我原因,那就太好了。