导航栏标题更新为时已晚(Swift)

时间:2018-08-16 11:13:06

标签: ios swift uinavigationbar

在选择了显示某些类别的collectionViewController的单元格之后(在navigationViewController内部),我有一个tableViewController显示。我希望导航栏显示所选类别的标题,但标题不会及时更新。

这意味着每当我返回并选择其他类别时,它都会显示旧标题,即标题始终滞后于视图?

这是我在collectionViewController中的代码:

java.lang.invoke.WrongMethodTypeException: cannot convert MethodHandle(VarHandle,byte[],int,byte)void to (VarHandle,Object[])void

并在TableViewController中:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if (segue.identifier == "CategorySelected") {
        let vc = segue.destination as! SearchOrgTableViewController
        vc.category = selectedCategory
    }
}

有什么办法解决吗?

我试图直接在prepare函数中设置标题,结果相同,调用reloadInputViews()也不起作用。

2 个答案:

答案 0 :(得分:1)

尝试以下代码:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier == "CategorySelected") {
DispatchQueue.main.async {
let vc = segue.destination as! SearchOrgTableViewController
    vc.category = selectedCategory
    vc.title = category.name } }
}

答案 1 :(得分:0)

  

在iOS 10中,UIKit已更新并统一了后台管理,用于   UINavigationBar,UITabBar和UIToolbar。特别是对   这些视图的背景属性(例如背景或阴影)   图片或设置条形样式)可能会为   条以解决新的背景外观。特别是这个   表示尝试更改这些条的背景外观   -[UIView layoutSubviews],-[UIView updateConstraints],   -[UIViewController willLayoutSubviews],-[UIViewController didLayoutSubviews],-[UIViewController updateViewConstraints]或任何   响应布局而调用的其他方法可能会导致   布局循环。

因此,这会发生。尝试在加载视图或显示视图时更新标题,可能会对您有所帮助。