"pushViewController"到自己的班级,然后是"performSegueWithIdentifier"导致"Receiver has no segue with identifier"



我有一个主菜单视图控制器,它不是在我的故事板中定义两次,中间有段,而是在自己类的新实例上调用pushViewController。因此:

menu_a --> menu_a --> option_x

而不是

menu_a --> menu_b --> option_x

推送视图控制器一次后,navigationController失去了对相关分段的跟踪,我得到了"Receiver has no segue with identifier"消息。也就是说,

menu_a --> option_y

永远不会产生这种错误。

在过去的三个小时里,我在谷歌上搜索了Stack Overflow,但运气不佳。我希望有人也尝试过同样的事情,并希望详细说明解决方法。

我不能保证这会起作用,但这里是:

大概是因为片段是情节提要功能,所以调用performSegue是指回由情节提要实例化的ViewController。正如这个问题中所描述的,可以请求您的故事板从自身实例化一个新的ViewController,而不是手动创建它(我认为您正在这样做)。

UIStoryboard* storyboard = [[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
UIViewController* dest = [storyboard instantiateViewControllerWithIdentifier:@"CustomController"];

从以这种方式创建的ViewController中尝试segue可能会更幸运,因为它应该具有相同的segue信息,而手动创建的则不会)。这只是一个理论-让我知道它是否有效:)

最新更新