本文演示了Storyboard 多场景和切换(Segue)的应用。
在使用模板Single View Application创建iPhone App时,只包含一个视图控制器和一个视图,也就是只有一个场景。不过,可以很容易在Storyboard中添加场景。
本范例App的运行界面如下图所示:
1. 将View Controller 从对象库中拖曳到Storyboard 空白编辑区,就在Storyboard中添加一个视图控制器和相应的视图。
2. 对于每一对新添加的视图控制器和视图,一般而言,还需要提供支持的类文件(继承UIViewController)。
3. 需要将场景的视图控制器和新创建的类(继承UIViewController)进行关联,在Identity Inspector窗口完成操作。
4. 创建从初始场景到新创建的切换,按住Control 键,并从interface builder 编辑器中的切换按钮(本范例为-编辑按钮)拖曳到文档大纲中新场景的视图控制器图标上。
下面是切换(Segue)的属性设置,这里设置为Modal 模态:
本范例App的主要代码:
在新的场景实现文件中,viewDidLoad方法的代码如下。在目标视图控制器中,使用self.presentingViewController 属性获取源视图控制器。然后进一步获取成员变量emailLabel。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.emailField.text = ((ModalViewController *)self.presentingViewController).emailLabel.text;
}
目标视图控制器中的按钮操作代码,将emailField.text属性回写到源视图控制器的标签上:
- (IBAction)dismissEditor:(id)sender {
((ModalViewController *)self.presentingViewController).emailLabel.text = self.emailField.text;
[self dismissViewControllerAnimated:YES completion:nil];
}