Странное поведение tabbarcontroller

У меня есть приложение панели вкладок, и я сталкиваюсь со странным поведением.... когда я переключаю панель вкладок и добираюсь до новых контроллеров представления, иногда вызывается viewDidLoad этих контроллеров представления... хотя viewDidLoad должен вызываться только в первый раз ... может кто-нибудь сказать... любое предложение??


person devaditya    schedule 03.02.2011    source источник
comment
Вы имеете в виду, когда вы входите, затем выходите и снова входите?   -  person John Parker    schedule 03.02.2011


Ответы (3)


Если есть предупреждение о нехватке памяти, контроллер панели вкладок освободит все виды, которые не видны. Это означает, что вы можете вызвать viewDidLoad более одного раза, потому что представление было выгружено.

person deanWombourne    schedule 03.02.2011

Ваше приложение интенсивно использует память, возможно, до такой степени, что вы получаете предупреждение о памяти? Хотя я не сталкивался с поведением, которое вы описываете, возможно, из-за интенсивного использования памяти ваши невидимые представления освобождаются из-за нехватки памяти. Когда они в следующий раз появятся в поле зрения, их нужно будет повторно инициализировать, вызвав viewDidLoad.

person Matthew Frederick    schedule 03.02.2011
comment
Ха, ты опередил меня с ответом на 26 секунд :) - person deanWombourne; 03.02.2011
comment
это может быть причиной... но когда я запускаю свое приложение... использование памяти никогда не превышает 6 МБ... - person devaditya; 03.02.2011
comment
@deanWombourne Иногда лучше позже: вы получили признание за ответ. :) - person Matthew Frederick; 03.02.2011
comment
Да, это странно - ваш ответ лучше :) - person deanWombourne; 03.02.2011

Вы уверены, что это viewDidLoad, а не viewWillAppear?

viewDidLoad будет вызываться только один раз в каждом подклассе UIViewController, поэтому, если ваш макет выглядит следующим образом:

-UITabBarController:
    - HappyUIViewController
    - SadUIViewController
    - ThirdUIViewController

Тогда viewDidLoad будет вызываться три раза. Один раз для HappyUIViewController, один раз для SadUiViewController и так далее.

person Enrico Susatyo    schedule 03.02.2011