методы контроллера представления iphone не вызывают, но показывают представления - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть контроллер навигации с UITableView, который при переходе в другой вид при выборе строки. Когда это загружает, точки останова получают удар. Хорошо до сих пор. Когда я нажимаю кнопку «Назад», представление таблицы выглядит нормально, с данными. Однако, несмотря на то, что у меня включены точки останова в viewcontroller, ни одна из них не получает удар, как при первоначальной загрузке! Но все же данные загружаются нормально. Единственная точка останова, которая регистрируется сейчас, - это когда я щелкаю строку (didSelectRowAtIndexPath).

Ответы [ 3 ]

0 голосов
/ 08 апреля 2011

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

0 голосов
/ 08 апреля 2011

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

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

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

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

Ссылка класса UINavigationController очень хорошо объясняет эту концепцию.

0 голосов
/ 08 апреля 2011

Где установлены точки останова, которые вы ожидаете, что он сломается?

Возможно, вам нужно вызвать следующее в методе viewWillAppear ...

[self.table reloadData];
...