一个UIStoryboardSegue对象负责执行两个试图控制器之间的视觉过渡。另外,segue对象通常用来准备从一个控制器过渡到另一个控制器。segue对象包含了涉及过渡的控制器的信息。当segue被触发,并且在视觉过渡发生之前,正在运行的storyboard调用当前的视图控制器的prepareForSegue:sender:方法从而可以传送任何将要展示的必须数据到下一个视图控制器。
UIStoryboardSegue类支持UIKit提供的标准视觉过渡。您还可以继承到您的故事板文件中定义的视图控制器之间的自定义转换。
你不必直接创建segue对象。运行的storyboard创建他们当它必须执行一个在两个视图之间的segue时候。如果你希望的话,你也可以通过编程的方法启动一个segue通过使用UIViewController中的performSegueWithIdentifier:sender:方法。你可以通过这种方法启动一个segue从通过代码添加的资源并且在Interface builder中不可用。
子类注意事项:
你可以继承UIStoryboard当你想在应用中的视图控制器之间提供一个自定义过渡。用自己定义的segue,创建一个segue line在interface buider上恰当的视图控制器之间并且设置他的类型为自定的监督类型;你必须指定segue的类名用来检查用。
当故事板运行时检测到一个自定义的segue,它创建类的一个新实例,与视图控制器对象对其进行配置,要求源视图控制器为segue做准备,然后执行segue。
需要重载的方法:
对于自定义的segues,你需要重载的主要方法是perform. 运行的storyboard调用这个方法当执行从一个在
sourceViewController的视图控制器过渡到一个destinationViewController的视图控制器。如你需要初始化任何变量在你的自定义segue子类,你同样可以重载initWithIdentifier:source:destination:方法并且在你自定义实现中初始化他们。
替代子类:
如果你的segue不需要携带附加的信息或者提供除了 perform方法以外的任何方法,考虑使用segueWithIdentifier:source:destination:performHandler: 方法代替。
①自动segue:
直接从相应的控件连线到相应的ViewController,然后选择push
②手动segue:
从登陆界面连线到相应的ViewController,然后选择push。
- (IBAction)clicktoTwo:(id)sender {
[self performSegueWithIdentifier:@"oneToTwo" sender:nil];
}
其中oneToTwo是segue的ID
如果要将数据传入下一个ViewController中,需要以下方法:
//执行segue后,将要跳转前执行。
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
UIViewController *vc = segue.destinationViewController;
[vc.navigationItem setTitle:[NSString stringWithFormat:@"%@的联系人",self.textfieldName.text]];
}