我有一个viewController,它被导航控制器推到堆栈上。在这个viewController中,我有一个名为setupViews的函数,它将我的UI元素添加到视图中,并根据导航栏的底部锚定来锚定它们。
例子:
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尚未设置。因此,我在ViewDidDisplay中调用setupViews,这是不可取的,因为每次ViewController出现时视图都会重新加载。
是否有一个函数可以在设置导航栏后调用SetupView,并且只运行一次?我想用didSet创建一个导航栏可选,并在其中调用SetupView,但我不确定这是否能解决这个问题。