iphone - вылетает приложение Nav-bar - PullRequest
0 голосов
/ 12 февраля 2011

У меня есть приложение контроллера с вкладками с двумя вкладками. Одна из моих вкладок использует навигационный контроллер.
Контроллер навигации, который я сделал для этого, находится в представлении A. Представление A действует исключительно как контроллер и автоматически выдвигает представление B, которое, в свою очередь, выдвигает представление C, которое выдвигает представление D.

Я хочу, чтобы следующим представлением был Вид B, поэтому я использовал

NSArray *viewControllers = [[self navigationController] viewControllers];
int i=0;
while (! [[[viewControllers objectAtIndex:i] nibName] 
        isEqualToString:@"ViewBController"]
        && i < [viewControllers count]) 
             i++;

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

self.navigationController popToViewController:[viewControllers objectAtIndex:i] animated:NO];

чтобы вернуться к просмотру B

Моя проблема в том, что в этот момент приложение вылетает. Ну, технически это происходит сбой после освобождения View C (я поставил nslogs там, чтобы это выяснить).

Понятия не имею, в чем может быть моя проблема? Кто-нибудь может дать понимание?

РЕДАКТИРОВАТЬ: я также попытался создать новый контроллер представления, View E, и нажать его, и он по-прежнему вылетает

Ответы [ 2 ]

1 голос
/ 12 февраля 2011

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

Перед переключением видов у меня было предупреждение, что я установил автоматический выпуск, а затем я также выпустил его.
Iпонял это с помощью NSZombie, что потрясающе.

Для всех, кому нужна ссылка, проверьте это: http://cocoadev.com/index.pl?NSZombieEnabled

0 голосов
/ 12 февраля 2011

Сначала уточнение ... Когда вы говорите, что ваш навигационный контроллер находится «в представлении А», что именно вы имеете в виду? Вы имеете в виду, что это View Controller, содержащийся на первой вкладке?

Пока, похоже, у вас может быть принципиальное недопонимание того, как использовать навигационный контроллер. Они не должны быть загружены так, чтобы вы могли пролистать до того, который вы хотите. Каждый контроллер представления в контроллере навигации должен представлять собой новый экран, к которому пользователь решил перейти. Похоже, вы пытаетесь заполнить контроллер nav группой контроллеров представления, а затем нажать или щелкнуть один из них посередине, но на самом деле это не так.

Вот видео, объясняющее, как использовать UINavigationController, возможно, это поможет. http://vimeo.com/2371881

...