【发布时间】:2019-02-16 02:18:24
【问题描述】:
我有一个视图控制器,它被导航控制器推入堆栈。在这个 viewController 中,我有一个名为 setupViews 的函数,它将我的 UI 元素添加到视图中,并根据导航栏的 bottomAnchor 锚定它们。
例子:
func setupViews() {
view.addSubview(topBar)
topBar.anchor(top: navigationController?.navigationBar.bottomAnchor, left: view.leftAnchor, bottom: nil, right: view.rightAnchor, paddingTop: 1, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 55)
}
我想在 viewDidLoad() 中调用 setupViews() 但此时,navigationController 的 navigationBar 没有设置。所以我在 viewDidAppear 中调用 setupViews ,这是不可取的,因为每次 ViewController 出现时视图都会重新加载。
在设置导航栏后,是否有一个函数可以在其中调用 setupViews 只运行一次?我正在考虑使用 didSet 创建一个可选的 navigationBar 并在其中调用 setupViews,但我不确定这是否能解决问题。
【问题讨论】:
标签: ios swift uinavigationcontroller uinavigationbar