gpt4 book ai didi

ios - 对导航项的更改延迟显示

转载 作者:行者123 更新时间:2023-11-29 05:44:01 26 4
gpt4 key购买 nike

在更改嵌入在 NavigationController 中的 ViewController 内的 navigationItem 的属性时,我遇到了延迟。

考虑 XCode 提供的 Master-Detail-App 示例:它包含一个 MasterViewController 以及一个到 DetailViewController 的 segue。我现在尝试在 DetailViewController 的 viewDidLoad 方法内自定义导航栏。

class DetailViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

//delay if the button (or any other property) is set here
navigationItem.rightBarButtonItem = editButtonItem
}
}

导航栏的更改将会显示,但会有明显的延迟。但是,如果对导航栏的更改是在 MasterViewController 内进行的,则一切都可以完美流畅地运行:

class MasterViewController: UIViewController {

...

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
let controller = (segue.destination as! UINavigationController).topViewController as! DetailViewController

//no delay if the button would instead be set here
//navigationItem.rightBarButtonItem = editButtonItem
}
}
}

对我来说,从 MasterViewController 内修改 navigationBar 的项目似乎不是一个好的做法。特别是因为titlebuttons 等项目在很大程度上依赖于 DetailViewController

现在要立即更改 navigationItem 并且考虑到关注点分离,最优选的方法是什么?

最佳答案

code添加到viewWillApear而不是viewDidLoad

override func viewWillApear() {
super.viewWillApear()

navigationItem.rightBarButtonItem = editButtonItem
}

关于ios - 对导航项的更改延迟显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56305596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com