无法以编程方式执行 segue
Posted
技术标签:
【中文标题】无法以编程方式执行 segue【英文标题】:Cannot programmatically perform segue 【发布时间】:2014-04-14 04:51:13 【问题描述】:我有一个故事板转场,其标识符为“Push to ResumeView”。
我尝试在我所在的 ViewController 中调用它,方法是
[self performSegueWithIdentifier: @"Push to ResumeView" sender: self];
.
但是什么都没有发生?
我宁愿只使用顶部 NavigationController 或其他东西推送 ViewController,但我也看不出如何做到这一点。
【问题讨论】:
就像你说的那样使用你的导航控制器,[self.navigationController pushViewController:vc animated:YES]; 给我看你的故事板截图并检查你的标识符,最好使用正确的标识符命名约定而不是使用空格 @"Push to ResumeView" : 删除标识符中的空格 我改了名字,截图i.imgur.com/LgQIl3G.png 另外,这是我的代码的一部分,这一行是我尝试调用推送视图控制器的那一行。我认为问题在于我使用的是self.navigationController
而不是故事板中定义的顶部导航控制器。所以这就是为什么它什么也没做。但我不确定github.com/AndrewSB/wwdc-scholarship-app/blob/master/FBCall/…
【参考方案1】:
尝试在“来自”视图控制器中实现shouldPerformSegueWithIdentifier:sender:
或prepareForSegue:sender:
方法。在方法中放置一个断点或 NSLog() 以检查 segue 标识符。这将证明您确实在情节提要中正确设置了转场。
如果您想手动将下一个视图控制器推送到导航控制器的顶部,请使用pushViewController:animated:
。但是,如果您使用情节提要,首选方法是使用 segue。
【讨论】:
我添加了一个shouldPerformSegueWithIdentifier
,其中包含一个 NSLog,但它没有触发。所以我认为我如何做segue有问题?这是那行github.com/AndrewSB/wwdc-scholarship-app/blob/master/FBCall/…
嗯...我想你只是从不打电话给pushresume
:)
但是方法顶部的 NSLog 输出推送恢复,在我的控制台中。所以我知道该方法被调用
尝试实现prepareForSegue:sender:
。我忘记了 shouldPerformSegueWithIdentifier:sender:
在您以编程方式触发 segue 时不会被调用。
在 ViewController 中实现,没有断点...所以我不是调用 segue 吗?【参考方案2】:
试试这个。
UIViewController *yourResumeView=[self.storyboard instantiateViewControllerWithIdentifier:@"PushToResumeView"];
[self.navigationController pushViewController:yourResumeView animated:YES];
【讨论】:
以上是关于无法以编程方式执行 segue的主要内容,如果未能解决你的问题,请参考以下文章