2014-09-25 2 views
2

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

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

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

Это стало проблемой после переключения на XCode 6. Он отлично работал в XCode 5. Любые идеи?

ответ

1

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

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

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

Существует потенциальное обходное решение здесь Unwind Segue not working in iOS 8, но оно имеет свои недостатки и побочные эффекты.

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