UISplitViewController на iPhone: поп в/показать основной вид из контроллера подробных представлений
Я использую новый iOS 8 UISplitViewController. Если я запустил его на iPhone, у меня возникла следующая проблема:
Мой основной контроллер представления запускает контроллер подробного представления для отображения. Контроллер подробных представлений выводит новый контроллер представления в стек UINavigationController в подробном представлении.
Теперь у меня есть проблема, если я хочу вернуться к основному контроллеру представления с нового контроллера представления.
Как я могу это сделать
[self.navigatonController popToRootViewControllerAnimated:YES];
не работает.
Я хочу показать основной контроллер представления на iPhone. Поэтому мне нужно снова открыть два представления.
Любые идеи, как я могу это сделать?
Ответы
Ответ 1
UIViewControllers имеют свойство splitViewController, поэтому вы можете получить ссылку на соответствующий контроллер навигации через него, а затем вызвать popViewControllerAnimated.
Здесь он находится в Swift (входит где-то в контроллер подробного представления):
if let navController = splitViewController?.viewControllers[0] as? UINavigationController {
navController.popViewControllerAnimated(true)
}
Ответ 2
Я только что нашел решение на форуме разработчиков Apple:
Как вручную "вернуться" к MasterViewController в UISplitViewController на iPhone
Старая (и, возможно, все еще действительная) рекомендация - позволить Мастеру view intiate "pop". Для этого детальный взгляд должен сообщите мастер-представление о нажатии вашей пользовательской кнопки. Это может достигается путем определения протокола, в котором основным видом является делегат и подробный вид имеют переменную, называемую "делегат". когда мастер подталкивает подробный вид, он устанавливает эту переменную делегата в самостоятельно. Теперь в подробном представлении есть крючок, чтобы сообщить главное представление.
Это означает, что из контроллера представления (под) подробно рассмотрен метод контроллера первичного представления:
(Sub) Подробный контроллер просмотра:
UINavigationController *navCon = [self.splitViewController.viewControllers objectAtIndex:0];
MyPrimaryViewController *primary = [navCon.viewControllers objectAtIndex:0];
[primary popToMaster];
Контроллер первичного представления:
- (void)popToMaster
{
[self.navigationController popViewControllerAnimated:YES];
}
Ответ 3
У меня такая же проблема!
Насколько я понял, splitViewController "выглядит" как навигационный контроллер на iPhone ( "свернутый" splitVC), но detailVC на самом деле НЕ находится в том же стеке навигации, что и masterVC. Вот почему ваше сообщение "popToRootViewController" больше не работает.
На данный момент я не нашел пути. я скажу вам, найду ли я решение.