У меня есть приложение панели вкладок, и я сталкиваюсь со странным поведением.... когда я переключаю панель вкладок и добираюсь до новых контроллеров представления, иногда вызывается viewDidLoad этих контроллеров представления... хотя viewDidLoad должен вызываться только в первый раз ... может кто-нибудь сказать... любое предложение??
Странное поведение tabbarcontroller
Ответы (3)
Если есть предупреждение о нехватке памяти, контроллер панели вкладок освободит все виды, которые не видны. Это означает, что вы можете вызвать viewDidLoad более одного раза, потому что представление было выгружено.
Ваше приложение интенсивно использует память, возможно, до такой степени, что вы получаете предупреждение о памяти? Хотя я не сталкивался с поведением, которое вы описываете, возможно, из-за интенсивного использования памяти ваши невидимые представления освобождаются из-за нехватки памяти. Когда они в следующий раз появятся в поле зрения, их нужно будет повторно инициализировать, вызвав viewDidLoad
.
Вы уверены, что это viewDidLoad, а не viewWillAppear?
viewDidLoad будет вызываться только один раз в каждом подклассе UIViewController, поэтому, если ваш макет выглядит следующим образом:
-UITabBarController:
- HappyUIViewController
- SadUIViewController
- ThirdUIViewController
Тогда viewDidLoad будет вызываться три раза. Один раз для HappyUIViewController, один раз для SadUiViewController и так далее.