我有一个主菜单视图控制器,它不是在我的故事板中定义两次,中间有段,而是在自己类的新实例上调用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信息,而手动创建的则不会)。这只是一个理论-让我知道它是否有效:)