2009-06-30 7 views
1

Несколько раз, когда я нажимаю ViewController в контроллер навигации, метод viewDidLoad() контроллера просмотра не вызывается. И это приводит к краху моего приложения. Буду признателен за любую помощь.Контроллер Push View в контроллер навигации

Я забыл упомянуть, что загружаю вид из наконечника, прежде чем нажимать его на контроллер навигации.

Спасибо, Сара

ответ

6

viewDidLoad метод вызывается только тогда, когда вид сначала загружается из файла СИБ. Если представление уже загружено, и вы снова нажмете его, он не будет запускаться снова. В зависимости от того, что вы хотите сделать, вместо этого вы можете использовать viewWillAppear или viewDidAppear.

+0

viewDidLoad также вызывается, когда ViewController инициализирован, даже если XIB не задействован вообще. – mmc

+0

viewDidLoad вызывается сразу после loadView, который вызывается при первом доступе к свойству .view. По умолчанию loadload загружает файл nib (если вы указали имя файла nib при входе в контроллер представления), но вы можете переопределить loadView для создания представления в коде. –

2

После того, как представление загружено и добавлено в стек контроллера, вы не увидите это снова. Вам понадобится представление, чтобы соскочить со стека и снова нажать, чтобы увидеть его. Вы всегда можете быть уверены viewWillAppear будет вызываться каждый раз, когда вы возвращаетесь к просмотру. Это позволяет вам делать любое домашнее хозяйство, которое может быть в порядке (что я считаю целью).

+0

Это неверно. ViewDidLoad вызывается только один раз (если позже не будет выпущено представление для освобождения памяти). У Дидрика Хоогенбума все правильно. –

+1

Это именно то, что я написал. Я сказал, что он называется один раз, и вам нужно реализовать viewWillAppear, чтобы делать что-то, когда вы возвращаетесь к просмотру. Пожалуйста, прочитайте сообщение. – MystikSpiral

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