Storyboard 内View连接关系
在Storyboard中,segue有几种不同的类型,在iphone和ipad的开发中,segue的类型是不同的。
1. 在iphone中,有:push,modal,和custom三种不同的类型,这些类型的区别在与新页面出现的方式。
2. 而在ipad中,有:push,modal,popover,replace和custom五种不同的类型。
详细说明如下:
1) modal
最常用的场景,新的场景完全盖住了旧的场景。用户无法再与上一个场景交互,除非他们先关闭这个场景。是在viewController中的标准切换的方式,包括淡出什么的,可以选切换动画。
2) push
Push类型一般是需要头一个界面是个Navigation Controller的。注:是在navigation View Controller中下一级时使用的那种从右侧划入的方式。
3) popover(iPad only)
就是采用浮动窗的形式把新页面展示出来,只有ipad下才有用。
4) replace (iPad only)
替换当前scene,只有ipad下才有用。
5) custom
自定义跳转方式,需要自定义继承于UIStoryboardSegue的子类。
接下来,我们用几个例子,来说明model,push,custom的区别。
1. 创建一个空项目, 使用Empty Application 模板创建项目,其实可以使用其他模板,在此是为了进一步了解机制,选择最原始的方式来进行。
2. 创建一个MainStoryboard.storyboard文件,如下图所示:
3. 打开MainStoryboard.storyboard 拖一个View Controller,如下图所示:
注:
(1.)Initial Scene:初始化Storyboard时显示此视图。 这个选择框,如果只有一个视图,将自动选择。
(2.)Identifier: 识别码,在编程中跳转时需要,在此我们先设置成:First
4. 设置项目使用主Storyboard,如图所示:
5. 修改AppDelegate.m
2 {
3 /* 删除以下的代码,使用Storyboard后,不需要这此代码,只需要 return YES;就可以了
4 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
5 // Override point for customization after application launch.
6 self.window.backgroundColor = [UIColor whiteColor];
7 [self.window makeKeyAndVisible];
8 */
9 return YES;
10 }
6. 到此,运行就可以看到效果,没有骗你,是不是很简单。
7. 我们要看是视图跳转,所以还需要添加一个视图,最终效果如下:
操作也很简单,选中第一个视图中的按钮,右键拉出一条线到第二个视图上,放开就可以看:
一定要选择model,其它两种,我们后面有例子。
Modal Style:
*Cover Vertical: 滑入效果。从下面滑入当前场景,这是默认效果同Default。
*Filp Hovizontal: 翻转效果。
*Cross Dissolve: 淡出效果。
*Partial Curl: 翻页效果。
8. 在第二个视图,添加按钮事件,返回第一个视图
代码如下:
2
3 @interface SecondViewController : UIViewController
4 - (IBAction)btnBackHome:( id)sender;
5
6 @end
2 [self dismissModalViewControllerAnimated:YES];
3 }
9. 到此,我们就完成页面跳转的效果,是不是很简单?接下来,我们演示push的连接方式,从步骤7开始,重新做。
拖一个Navigation Controller到Storyboard中,并设置Table View为静态Cell,如下所示:
然后,添加对应三个ViewController, “我的资料”、“我的订单”和“发布活动”
每个表格里,选择连接到相应的View Controller,连接方式是Push,最终结果如下:
10. 到此,我们又完成Push页面跳转的效果,是不是很简单?接下来,我们演示Custom的连接方式,从步骤7开始,重新做。
先添加一个控制类,如下:
重写perform方法,详细如下:
2
3 -( void)perform
4 {
5 // 原视图
6 UIViewController *source = self.sourceViewController;
7
8 // 下个视图
9 UIViewController *next = self.destinationViewController;
10
11 // 跳转动作
12 [source presentModalViewController:next animated:YES];
13 }
14 @end
接下来回到Storyboard做些简单的设置,如下图所示:
我没有骗人吧,真得很强大,很简单。
使用编程方式跳转View
1. Modal 方式跳转
2 UIStoryboard *board = [UIStoryboard storyboardWithName: @" MainStoryboard " bundle:nil];
3
4 // 获取故事板中某个View
5 UIViewController *next = [board instantiateViewControllerWithIdentifier: @" Second "];
6
7 // 跳转
8 [self presentModalViewController:next animated:YES];
2. 以Modal 方式跳转的返回方法(modal跳转的返回上一个页面)
3. 根据Segue Identifier 跳转
2 [self performSegueWithIdentifier: @" GotoSecond " sender:self];
4. Push 方式跳转
5. 弹出一个ViewController 相当于返回上一个界面(push跳转的返回上一个页面)