Как настроить виды один раз после установки viewdidload или navigationBar? - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть viewController, который помещается в стек навигационным контроллером.В этом viewController у меня есть функция setupViews, которая добавляет мои элементы пользовательского интерфейса в представление и привязывает их в соответствии с 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)
}

Я хочу вызвать setupViews () в viewDidLoad (), но на этом этапе навигационная панель navigationController не установлена.Поэтому я вызываю setupViews в viewDidAppear, что нежелательно, так как представления перезагружаются каждый раз, когда появляется ViewController.

Есть ли функция, в которой я могу вызывать setupViews, которая запускается только один раз, после установки навигационной панели?Я думал о создании необязательного навигационного бара с didSet и вызове setupViews, но я не уверен, решит ли это проблему.

1 Ответ

0 голосов
/ 16 февраля 2019

Я хочу вызвать setupViews () в viewDidLoad (), но на этом этапе навигационная панель navigationController не установлена.Поэтому я вызываю setupViews в viewDidAppear, что нежелательно, поскольку представления перезагружаются каждый раз, когда появляется ViewController.

Что ж, очевидно, вы могли бы решить эту проблему , просто используя экземпляр Boolсвойство, так что вы только делаете это, вызывается first time viewDidAppear.Но я подвергаю сомнению ваше предположение, что вам когда-нибудь понадобится привязать что-либо к навигационной панели контроллера навигации.Якорь на вершине безопасной зоны .Вот для чего это.

...