iphone, ipad Navigationcontroller popToViewController не работает

Я реализовал навигационный контроллер, который имеет более 10 представлений.. здесь, проводя пальцем вправо в представлении, я переключаюсь на следующий вид... проводя пальцем влево, вы попадете на предыдущую страницу. здесь я использовал poptoviewcontroller для перехода на предыдущую страницу.

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

здесь я использовал все свойства poptoviewcontroller, но это не работает.

спасибо,


person nik    schedule 05.01.2011    source источник


Ответы (3)


Вы должны думать о контроллерах представления навигации как о стеке (например, о стопке бумаг на вашем столе).

Итак, если что-то поместить в стек, когда вы выталкиваете что-то из стека, это будет предыдущий элемент.

Я не уверен, что вы делаете, но я бы посмотрел на документация для метода setViewController:Animated UINavigationController. Думаю поможет с твоей проблемой.

person mackross    schedule 05.01.2011
comment
возможно ли добавить все viewControllers в общий стек перед нажатием и выталкиванием.. - person nik; 05.01.2011
comment
у вас может быть nsarray, который содержит все контроллеры представления, а затем сделать копию, настроенную для того, что вы хотите отобразить, затем вы можете использовать анимированный массив setViewController: (NSArray): Однако я чувствую, что то, что вы делаете, было бы лучше сделать с UIScrollView? - person mackross; 06.01.2011

Позвольте мне объяснить вам, что такое стек nvaigationcontroller.

Стек = {корень, А, В, С, D}.

Текущее видимое представление — D. Когда вы делаете pushViewController(E), это означает, что вы добавили в стек новое представление, которое становится видимым: Stack = {root, A, B, C, D, E}. Когда вы делаете popViewController, вы удаляете последний элемент стека и устанавливаете новый последний элемент видимым, в нашем случае он становится: Stack = {root, A, B, C, D} снова, а D видим. Теперь, если вы выбираете popToRootController(A), это означает, что вы удаляете все элементы из стека до тех пор, пока верхний элемент не станет A, и он не станет видимым, поэтому в нашем случае это Stack = {root, A}.

Надеюсь, я правильно понял ваш вопрос и объяснил вам, чтобы вы могли правильно понять иерархию. Если нет, переформулируйте свой вопрос.

person Oleg Danu    schedule 05.01.2011
comment
Привет, Дану, спасибо за ваш ответ, вот что я делаю из контроллера A (согласно вашему примеру), я нажимаю viewController D. Если я сделаю popToController в D, он перейдет к «A» вместо этого я просто хочу перейти к предыдущему onr т.е. контроллер вида 'C'.. - person nik; 05.01.2011
comment
Вы не можете этого сделать. Потому что у вас нет C в стеке, насколько я понимаю. Как я понимаю изначально у вас следующая ситуация. Stack = {root, A} вы делаете pushVieController(D), теперь наш стек Stack = {root, A, D}. У нас нет представления C в стеке. Я так понимаю, что у вас такая логика и вы хотите вернуться на C. Я вам рекомендую - (void)setViewControllers:(NSArray *)viewControllersanimated:(BOOL)animated из того же класса. - person Oleg Danu; 05.01.2011
comment
В этом случае вы сможете сделать следующее: Stack = {root, A}; Вы добавляете [navigationController setViewControllers:(NSArray *){B,C,D} анимированные:NO) ваш стек станет Stack = {root, A, B, C, D} и в этом случае, когда вы нажмете Back или используете popviewController, вы пойдет от D до C. - person Oleg Danu; 05.01.2011
comment
спасибо Danu, теперь он работает, но анимация poptoviewcontroller не работает... вот мой код 4 ur ref.. NSArray *popStack = [NSArray arrayWithObjects:reviewsTableViewController, genotypeViewController,nil]; [self.navigationController setViewControllers: popStack анимированный: YES]; [self.navigationController popToViewController: [self.navigationController.viewControllers objectAtIndex: 0] анимированный: ДА]; - person nik; 05.01.2011
comment
Появляется без какого-либо вида анимации... здесь нужна анимация, подобная свойству кнопки возврата.. - person nik; 06.01.2011
comment
хммм, может быть, вы пытаетесь сделать аниматонов сами. Проверьте начало анимации UIView. - person Oleg Danu; 06.01.2011

наконец я решил эту проблему. но не используя фактически метод setViewController.

здесь, в то время как само представление я добавил представления в стек. т.е., например, я хочу перейти к представлению от A до D, что означает, что я добавил b и c с анимированным pushviewcontroller: NO; и D с анимацией: ДА;

Так что это работало отлично для меня....

person nik    schedule 07.01.2011