我有一个NavigationController作为初始视图,一个ViewController作为根视图。从那个根视图我试图做一个segue:
[self.navigationController performSegueWithIdentifier:@"Segue" sender:self];
我的故事板中有另一个视图控制器,我给了segue正确的标识符。在iOS 8上它运行得很完美,但在iOS 7上崩溃时会出现以下消息:
*** Terminating app due to uncaught exception 'NSGenericException', reason: 'Could not find a navigation controller for segue 'Segue'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.'
我不明白为什么它不适用于iOS 7 ...
更新:这是我的故事板:
答案 0 :(得分:4)
问题是, segue 以UINavigationController
为来源。
UINavigationController
不应执行 segue 。它应该只连接到rootViewController
,它可以是UIViewController
(或其子类)。应从rootViewController
的{{1}}执行 segue 。 segue 应将UINavigationController
作为其来源,并将其他rootViewController
(或其子类)作为其目的地。
您的屏幕截图显示您的UIViewController
已与UINavigationController
相关联。您现在需要将rootViewController
设置为 segue (具有标识符rootViewController
)的来源,目前您的Segue
作为其来源。现在,从UINavigationController
,致电
rootViewController
答案 1 :(得分:1)
这样做:
[self performSegueWithIdentifier:@"Segue" sender:self];
答案 2 :(得分:0)
Self
内执行segue
,请使用rootViewController
。
如果没有,那就试试吧。
[self.navigationController.viewControllers[0] performSegueWithIdentifier:@"Segue" sender:nil];
希望这会对你有所帮助。
我认为segue
storyboard
中rootViewController
与viewController
之间没有Segue
{@ 1}},其名称为@“{{1}}”。