2011-01-18 4 views
0

Представляет ли ViewController представленный контроллер для запуска метода viewDidLoad?Представление ViewController

Если изображение 1 загружено, а другое представлено. Затем что-то вызывает представление view1. Будет ли он работать через метод viewDidLoad?

ЕСЛИ НЕ КАК это должно быть сделано? ViewDidAppear?

ответ

4

Основываясь на том, что ретранслируется Джесси, вызывается viewDidLoad, когда представление загружается в память (обычно при первом представлении контроллера представлений с момента запуска приложения - упрощается, но этого пока достаточно).

Когда вы показываете другие контроллеры представлений, а затем возвращаетесь к тому, как этот оригинальный контроллер просмотра «view1», если не было события памяти, которое отбросило его из памяти, оно НЕ будет звонить viewDidLoad.

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

  1. viewWillAppear:
  2. viewDidAppear:

В viewWillAppear:, у вас есть место, чтобы сделать что-то "за кадром", прежде чем ваш контроллер представления отображается.

В разделе viewDidAppear: вы можете выполнять дополнительные операции, которые подходят для того, когда вид контроллера просмотра уже виден. Например, вы хотите запустить небольшую анимацию, которую пользователь увидит, когда контроллер вида полностью будет виден.

В обоих этих методах убедитесь, что вы вызываете реализацию супер, прежде чем что-либо делать. Кроме того, чтобы узнать об этом жизненном цикле, установите оператор breakpoint или NSLog() в каждом из этих методов (viewDidLoad, viewWillAppear, viewDidAppear), чтобы увидеть, когда они вызываются.

Там есть концепция кусок в документации компании Apple на View Controllers, что стоит 20 минут прочитать - это будет проясняться много этой ключевой информацией жизненного цикла о View Controllers, и это центрального развития IOS. Смотрите раздел «Понимание View для управления жизненным циклом» по адресу:

http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html%23//apple_ref/doc/uid/TP40007457-CH101-SW1

+0

Дело в том, я создаю новый экземпляр ViewController и представить его. Новый экземпляр View1 – jarryd

+0

Часто мы повторно используем один и тот же экземпляр контроллера представления, и поэтому мои комментарии выше в этом смысле. В вашем случае, если вы создаете новый объект («view1») в разных точках вашего приложения, я ожидаю, что каждый новый экземпляр вызовет удар в «viewDidLoad». Я бы поместил некоторую переменную свойства как «имя», которую вы можете установить каждый раз, когда вы создаете экземпляр одного из них. Сделай это. Затем в viewDidLoad выпейте что-то вроде: NSLog (@ "В viewDidLoad, например, с именем:% @", self.имя); Изучение этой последовательности вывода журнала покажет вам окончательный шаблон, с которым вы можете запланировать. – idStar

1

viewDidLoad вызывается только при загрузке представления в память. Обычно в первый раз он появляется (может быть чаще, если есть дампы памяти и т. Д.).

viewDidAppear: вызывается каждый раз, когда вид viewController становится «активным» видом в окне.

Смежные вопросы