我在故事板的一个场景中有一个工具栏。工具栏包含单个UIBarButtonItem。我希望按钮上的Touch Down触发一个新的UIViewController的segue。如果我拖到viewController并从弹出窗口中选择“Modal”,则不会触发segue。永远不会调用'prepareForSegue'。在“引用Storyboard Segues”下的Utility面板中,Button的名称旁边有一个感叹号,并在翻转时显示以下内容:
'null'不是有效的控制器包含密钥路径。
如果我从按钮中拖出并从弹出窗口中选择“推送”,我就不会收到此警告,但是segue不再起作用,并且从不调用prepareForSegue。
如果我将任何类型的segue连接到UIButton(在工具栏之外),则segue在两种情况下都能正常工作。所以在我看来,当从工具栏项目触发时,Segues不起作用。
任何人都可以证实这一点或指出我做错了吗?
答案 0 :(得分:20)
您可以使用
自行调用segue[self performSegueWithIdentifier: @"SegueToScene1" sender: self];
答案 1 :(得分:4)
我认为您可能正在使用UIButton
而不是UIBarButtonItem
对象。我只是遇到了同样的问题,但我最初将一个标准按钮拖到工具栏上。当我改变它时,故事板segue按预期工作。
答案 2 :(得分:1)
我在示例项目中的UIToolbar中设置了一个由UIBarButtonItem触发的模态segue,它工作正常。
答案 3 :(得分:0)
通过使用push,它可以与UIBarButtonItem一起使用。 你是否在没有prepareForSegue测试的情况下,我的意思是,只需将它们链接到.storybar中? 它将转到链接的ViewController,没有代码行的事件