双故事板如何跳转

Storyboard是Apple在iOS5送给程序员最大的礼物, 既然 已经有超过94%的用户使用iOS5以上系统 , 所以如今不管是Storyboard还是ARC都是现代工程必备之物.

新术语: segue, 它用来表示"连接"的概念, 在图像上就是连接controller的线条

描述: 为把所有xib集中在一个.storyboard文件, 并用segue连接起来


优势:

1. 提供big picture, 更好的管理UI

2. 提供图形化的tableview建立static cell的流程, 省去hard code的datasource

3. 让非程序员(co-developers, clients)更好的理解程序的workflow


[2] 如何在跳转的时候给目标ViewController传值?


1. 连接segue: ctrl+拖拽, 需要填写segue identifier, 建议#define到一块; 最好在代码中跳转, 这样更好等控制时机.

2. 跳转代码:

1
[ self performSegueWithIdentifier:@ "yoursegueid" sender: self ];

3. 数据传递:

过去的数据传递是这样的:


现在:

1. storyboard中连好A->B

2. 在A.m中:

1
2
3
4
5
6
7
8
9
- ( void )prepareForSegue:(UIStoryboardSegue *)segue sender:( id )sender
{
     if ([segue.identifier isEqualToString:@ "yoursegueid" ])
     {
         B *b = (B *)segue.destinationViewController;
         b.name = ...;
         b.image = ...;
     }
}

这段代码会在A通过segue跳转到任何页面时执行, 所以需要判断segue id.

 

[3] 拆分成多个Storyboard文件的方法

 

这样做有几个好处:

1. svn协作, 每个人负责自己的故事板, 避免冲突

2. 避免超大故事板导致的卡机

拆分产生的第一个问题是: 如何连接几个故事版?

跳转到另一个故事版的初始控制器:

1
2
3
4
// 取得目标故事板的对象
UIStoryboard* storyboard = [UIStoryboard storyboardWithName:@ "SecondStoryboard" bundle: nil ];
// 获取目标故事板的初始视图控制器并跳转
[ self .navigationController pushViewController:storyboard.instantiateInitialViewController animated: YES ];

跳转到故事板任意的视图控制器:

1.首先要给目标控制器起一个故事板id:

2. 跳转代码

1
2
3
4
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@ "secondStoryboard" bundle:[ NSBundle mainBundle]];
// 通过storyboard id拿到目标控制器的对象
     viewController *viewController =  [storyboard instantiateViewControllerWithIdentifier:@ "storyboard id" ];
     [ self presentModalViewController:viewController animated: YES ];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值