ios - панель навигации на представленном модальном контроллере с раскадровкой

Я просто хочу добавить панель навигации (с некоторой кнопкой панели навигации) на представленный модальный контроллер с раскадровкой.

Программно с XIB это выглядит так:

SDMapController *mapController = [[SDMapController alloc] initWithNibName:@"SDMapController" bundle:nil];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:mapController];

[self presentModalViewController:navigationController animated:YES];

Но я понятия не имею, как справиться с этим с помощью Storyboard. Я предполагаю, что мне нужно реализовать некоторый код для метода -(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender, но поскольку свойство destinationController объекта segue доступно только для чтения, я действительно не знаю, как это сделать.

Любая идея ?


person Yaman    schedule 03.01.2013    source источник


Ответы (1)


Вы должны реализовать подготовку к переходу, только если вы хотите передать некоторые данные вашему представленному контроллеру представления. В противном случае вы можете оставить его пустым. Представление контроллера представления происходит от построителя интерфейсов. Вы добавляете навигационный контроллер с его корневым контроллером представления и выполняете переход (ctrl + перетаскивание) к навигационному контроллеру. Установите тип перехода на модальный и присвойте ему идентификатор. Вы можете запустить этот переход из кода, вызвав [self perforSegueWithIdentiefier:@"MySegueID"];. Если вы перетащили переход с кнопки или ячейки табличного представления, он будет запускаться автоматически при нажатии на него, без вызова этого метода. Как я уже сказал, в методе prepareForSegue segue.destinationViewController будет представленным навигационным контроллером. Вы можете получить к нему доступ topViewController, если вам нужно, и передать ему некоторые данные.

person Levi    schedule 03.01.2013
comment
О, классно. Я попытался встроить навигационный контроллер в первый контроллер, но я не знаю, почему я не подумал о встраивании его в представленный контроллер... У меня есть связанный с этим вопрос: это нормальная ситуация, когда 2 навигационных контроллера включены? та же самая строка в моей раскадровке? NavController--›FirstVC--(модальный)--›NavController--›SecondVC. Или, например, лучше разместить кнопки «Назад» и т. Д. На панели инструментов вместо добавления навигационного контроллера в представленный вид? - person Yaman; 04.01.2013
comment
Когда вы представляете что-то в модальном режиме, вполне нормально иметь новый навигационный контроллер в модальном окне. Это то же самое, что и без раскадровки, вы создаете контроллер навигации и представляете его модально. Как в коде в вашем вопросе. - person Levi; 04.01.2013