Модально представленный контроллер представления не может раскрутиться

У меня есть подсистема UIViewController (VC1), встроенная в UINavigationController. VC1 инициирует модальный переход к другому подклассу UIViewController (VC2), который встроен в свой собственный, другой UINavigationController. Внутри метода действия, запускаемого UIBarButtonItem на панели навигации VC2, я вызываю

[self performSegueWithIdentifier:@"SomeString" sender:nil]

что соответствует методу раскрутки внутри VC1. Почему-то переход не происходит.

Это стало проблемой только после перехода на XCode 6. В XCode 5 все работало нормально. Есть идеи?


person SamConley    schedule 25.09.2014    source источник


Ответы (1)


Эта проблема ходит по кругу, и у меня точно такая же проблема. К сожалению, пока нет хорошего решения, кроме как вернуться к старому шаблону delegate.

Если вы создадите подкласс вашего контроллера навигации родительского контроллера представления и реализуете - (UIViewController*)viewControllerForUnwindSegueAction:(SEL)action fromViewController:(UIViewController *)fromViewController withSender:(id)sender, вы увидите, что модальное окно на самом деле ищет ваш метод unwindSegue в контроллере навигации, а не в контроллере представления, которое представило модальное окно.

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

Здесь есть потенциальный обходной путь: Unwind Segue не работает в iOS 8 но у него есть и недостатки, и побочные эффекты.

person Rog    schedule 28.09.2014