2014-11-13 2 views
0

У меня есть раскадровка с более чем 20 сценами. Я хочу уметь глубоко увязываться с одной из этих сцен. Для этого я хочу выполнить необходимые переходы из моего начального контроллера.Выполните серию сюжетных сцен

Так сказать, у меня есть контроллеры просмотра A, B и C с segues, изложенными следующим образом.

->A --segue1--> B --segue2--> C

Что это самый простой способ, чтобы получить от А до С без добавления специального кода B? Мне нужно, чтобы разматывать от C до B, чтобы оставаться неповрежденным. Единственное решение, которое я придумал, добавить специальную логику в B, которая выполняет segue2 после появления, если установлен флаг. Это не идеально, поскольку у меня есть некоторые варианты использования, где эта цепочка намного глубже. Я бы предпочел иметь код в A, который делает что-то вроде [A performSegues:[@"segue1", @"segue2"]].

Есть ли лучший способ сделать это?

Спасибо!

+0

Все ли они в одном 'UINavigationController'? То есть это все толчки? – Undo

+0

Нет. Я видел решение, которое включает настройку массива viewControllers из UINavigationController, но некоторые из них являются модальными. – rgbrgb

ответ

0

Вы можете использовать setViewControllers: animated: для создания всего пакета контроллеров представлений, которые вы хотите все сразу. Если вы начинаете с A, вы можете сделать изменчивую копию массива viewControllers контроллера навигации, добавить к нему столько других контроллеров представлений, сколько вам нужно, а затем передать этот массив в setViewControllers: animated :. Если вы установите анимированное значение YES, вы увидите одно нажатие от A до того, что было последним контроллером в массиве. Вы по-прежнему сможете использовать восстановление, чтобы вернуться к любому из этих контроллеров.

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

+0

Я не против видеть промежуточные представления при переходе, но они не обязательно все толкают на контроллер навигации. В приведенном выше примере segue1 является «push», а segue2 - «show modally». – rgbrgb

+0

@rgbrgb, Если вы хотите сочетание толчков и презентаций, то я не думаю, что есть хороший способ сделать это. Лично я считаю, что пользовательский интерфейс, в котором вы увидите кучу взглядов, которые толкаются и представлены быстро, не является хорошим дизайном. – rdelmar

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