Как я могу узнать, загружен ли viewcontroller из-за нажатия или из-за реконструкции вида после всплывающего окна на UINavigationController?

#ios #uiviewcontroller #uinavigationcontroller #loadview

#iOS #uiviewcontroller #uinavigationcontroller #loadview

Вопрос:

Я использую UINavigationController с несколькими viewcontrollers. Один из viewcontrollers, который создается программно в loadview: , выполняет некоторые пользовательские анимации для выполнения перехода от предыдущего viewcontroller.

Таким образом, эти анимации должны происходить только при нажатии viewcontroller, поскольку loadview вызывается только один раз при создании viewcontroller перед нажатием, обычно все работает отлично.

Однако, когда некоторые другие viewcontrollers загружаются, а памяти становится мало, представление автоматически выгружается системой и восстанавливается, если оно появляется снова после того, как другие viewcontrollers загружены.
Естественно, я не хочу, чтобы анимация перехода выполнялась, поскольку они выглядят довольно странно, если они не следуют за нажатием на предыдущий viewcontroller.

Вероятно, я мог бы сохранить некоторую информацию о состоянии или отправлять уведомления самостоятельно, чтобы узнать, вызывается ли loadview из-за pushViewController или popViewController, но я подумал, есть ли какой-либо встроенный способ узнать, происходит ли loadView из-за того, что представление создается в первый раз, или потому, что оно было ранее удалено?

Ответ №1:

Нет, у вас нет такого встроенного метода в UIViewController, но вы могли бы положиться на -(void)viewDidUnload, чтобы знать, что ваш view не должен отображать вашу анимацию в viewDidLoad. Так что да, это означает сохранение некоторой информации о состоянии.