“pushViewController”到自己的类,然后是“performSegueWithIdentifier”,导致“接收者没有标识符的segue”
Posted
技术标签:
【中文标题】“pushViewController”到自己的类,然后是“performSegueWithIdentifier”,导致“接收者没有标识符的segue”【英文标题】:"pushViewController" to own class followed by "performSegueWithIdentifier" resulting in "Receiver has no segue with identifier" 【发布时间】:2012-09-10 14:15:23 【问题描述】:我有这个主菜单视图控制器——它不是在我的故事板中定义两次,中间有segues,而是在它自己的类的一个新实例上调用pushViewController
。就这样:
menu_a --> menu_a --> option_x
而不是
menu_a --> menu_b --> option_x
在推送视图控制器一次后,navigationController
失去了对相关转场的跟踪,我收到“接收者没有带标识符的转场”消息。也就是说,
menu_a --> option_y
从不产生这种错误。
过去三个小时,我在 Google 上搜索并搜索了 Stack Overflow,但没有成功。 我希望有人尝试过同样的事情,并希望详细说明解决方法。
【问题讨论】:
恭喜您的第一篇文章!如果您提供有关您的问题的具体细节,包括源代码和屏幕截图等内容,其他人会更容易帮助您。虽然您确实对您的问题提供了良好的高级描述,但您可以通过包括例如改进您的问题。比“主菜单视图控制器 -thing”更具体的术语;实例化和推送新视图控制器的实际源代码;以及您已经找到的任何没有帮助的解决方案。希望这可以帮助您回答您的问题! 【参考方案1】:我不能保证这会奏效,但这里是:
大概是因为 segues 是 Storyboard 功能,调用 performSegue 是指回您的由 Storyboard 实例化的 ViewController。如this question 中所述,可以请求您的故事板从自身实例化一个新的 ViewController,而不是手动创建它(我认为您正在这样做)。
UIStoryboard* storyboard = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
UIViewController* dest = [storyboard instantiateViewControllerWithIdentifier:@"CustomController"];
尝试从以这种方式创建的 ViewController 中的 segue 可能会更幸运,因为它应该具有关联的相同 segue 信息,而手动创建的则不会)。这只是一个理论——让我知道它是否有效:)
【讨论】:
这看起来比我选择的(希望是)临时解决方案更好:我在情节提要的视图控制器上创建了一个不可见的按钮,并且允许它开始对父级进行 segue视图控制器。我只是通过它的标识符触发该 segue,因此它仍然保留其他可用的 segue。 (使用按钮仍然很笨拙 - 我明天试试你的方法!非常感谢。)以上是关于“pushViewController”到自己的类,然后是“performSegueWithIdentifier”,导致“接收者没有标识符的segue”的主要内容,如果未能解决你的问题,请参考以下文章
带有在另一个类中声明的 pushViewController 的 UIButton
如何使用 PushViewController 方法从 UIViewClass 导航到 UIViewController 类
使用 pushViewController 加载 TableViewController 后没有发生 Ios-Segue 到 UIViewController
无法识别的选择器发送到实例,UITabBarController pushViewController:animated: