11

У меня есть контроллер B вида, который выталкивается в стек навигации с помощью контроллера корневого представления A, и этому контроллеру вида B необходимо отобразить альтернативный вид, если его модель находится в определенном состоянии, так что она модально представляет другой контроллер представления C. Когда я отклоняю диспетчер представлений, CI также хотел бы поп-просмотр контроллера B, если он также находится в навигационном стеке. Я хотел бы сделать это таким образом, что есть только 1 переход.ios: как отклонить контроллер модального представления, а затем выталкивать контроллер тотального представления

Любые идеи?

+0

Вы используете xibs, или раскадровку для раскладки ваших просмотров? Похоже, ваш лучший выбор может заключаться в создании экземпляров третичного уровня в вашем контроллере корневого представления, а затем добавлении их в виде подзонов. Затем они могут быть показаны или скрыты. Это может быть намного более гибким, чем представление и отклонение модальных просмотров. – ninehundredt

+0

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

ответ

18

В сценарии, который вы опубликовали, контроллер представления представления для контроллера C видимости будет фактически навигационным контроллером, поэтому вы можете попросить его выскочить B, а затем убрать себя. Этот код в поле зрения контроллера C:

-(IBAction)goBackToA:(id)sender { 
    [(UINavigationController *)self.presentingViewController popViewControllerAnimated:NO]; 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

Если вы используете раскадровку, вы можете сделать это то же самое, прыгая непосредственно к А с размотки Segue.

+0

, после того, как я подумал, что я думаю, что мне может понадобиться легче, просто используя один контроллер представления и изменение его подзонов в соответствии с состоянием модели, я попробую ваш подход, если мне нужно будет использовать 2 отдельных диспетчера просмотра – Heisenberg

+0

Точно то, что мне нужно! – Nerrolken

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

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