在Swift 5
如果您不仅必须从SourceViewController到嵌入在UINavigationController中的DestinationViewController,而且还必须访问新的故事板,那么请执行以下操作.
- 在Interface中,在源ViewController旁边放置一个来自对象库的"Storyboard引用“对象,然后将一个segue拖到它上(例如,从SourceViewController视图上的一个按钮)。例如,将segue标识符命名为"ToOtherStoryboard“。
- 转到NavigationViewController,使用身份检查器给它一个故事板ID。"DestinationNavVC“就行了。
- 单击步骤1中创建的Storyboard引用图标,并在其属性检查器的“Referenced”字段中输入您在步骤2中为UINavigationController编写的Storyboard ID。这将创建从源到DestinationViewController的segue,而不管您在源ViewController的源文件中写了什么。这是因为对NaviationController的seguing将自动显示UINavigationController的根ViewController (第一个)。
- (可选)如果需要将数据与segue一起附加并将其发送到DestinationViewController中的属性,则需要在SourceViewController文件中的准备分段方法中编写以下代码:
重写函数准备(用于segue: UIStoryboardSegue,发件人: Any?) { if segue.identifier == "ToOtherStoryboard“{ let destinationNavVC = segue.destination as!UINavigationController让destinationVC = destinationNavVC.topController as!DestinationViewController destinationVC.name = nameTextField.text //例如destinationVC.occupation = occupationTextField.text }
如果您只是试图从一个PrepareForSegue移动到另一个ViewController,则不需要有一个ViewController,上面的方法将工作(w/o步骤3)。
- 在用于启动segue的按钮的IBAction出口方法中,您可以编写:
performSegue(withIdentifer:"ToOtherStoryboard",发件人: self)