UINavigationController - Pop - PullRequest
       2

UINavigationController - Pop

0 голосов
/ 11 сентября 2011

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

Stack
A classA
B classB
C classC
D classD

В стеке DI создайте другой класс D и добавьте его в стек.

Stack
A classA
B classB
C classC
D classD
E classD

Прежде чем я создаю E и помещаю его в стек, я делаю всплывающее окно, чтобы избавиться от D, чтобы стек стал

Stack
A classA
B classB
C classC
E classD

Однако, когда я выскакиваю, self.navigationController.viewcontrollers становится равным 0, и я застреваю на C, а E не становится видимым.Почему поп просто удаляет все и идет в C?

В C в didSelectRowAtIndexPath я создаю ClassD и делаю:

[self.navigationController pushViewController:ClassD animated:YES];

В D в didSelectRowAtIndexPath я создаю другой ClassD и делаю:

[self.navigationController popViewControllerAnimated:NO]; //remove current and replace with new
[self.navigationController pushViewController:ClassD animated:YES];

Но, похоже, он не делает то, что ожидалось.Я чувствую, что переход от популярности к толчку кажется слишком быстрым, ничего не появляется?Есть идеи?

1 Ответ

0 голосов
/ 11 сентября 2011

звучит так, как будто popViewController также устанавливает self.navigationController на nil.если self.navigationController равно nil, то [self.navigationController anyMethod] ничего не делает.

попробуйте это (не проверено):

UINavigationController *nav = self.navigationController;

[nav popViewControllerAnimated:NO]; //this pops myself
[nav pushViewController:anotherInstanceOfClassD animated:YES];

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

[[self retain] autorelease]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...