繁体   English   中英

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

[英]Navigation bar title updates too late (Swift)

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

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

这是我在collectionViewController中的代码:

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

并在TableViewController中:

var category: CategoryModel?{
    didSet{
        guard let name = category?.name else{
            return
        }
        self.navigationItem.title = name
    }
}

任何想法如何解决?

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

试试这个代码:

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 } }
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM