UIStoryboardSegue(多控制器)
2015-08-11 16:42
375 查看
UIStoryboardSegue(多控制器)
标签(空格分隔): UIUIStoryboardSegue
Storyboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue)Segue的属性
唯一标识@property (nonatomic, readonly) NSString *identifier;
来源控制器
@property (nonatomic, readonly) id sourceViewController;
目标控制器
@property (nonatomic, readonly) id destinationViewController;
Segue的类型
根据Segue的执行(跳转)时刻,Segue可以分为2大类型自动型:点击某个控件后(比如按钮),自动执行Segue,自动完成界面跳转不需要做任何判断(
按住Control键,直接从控件(按钮)拖线到目标控制器)
手动型:需要通过写代码手动执行Segue,才能完成界面跳转手动型的Segue需要设置一个标识(
按住Control键,直接从控制器拖线到目标控制器)
// 在恰当的时刻,使用perform方法执行对应的Segue [self performSegueWithIdentifier:@"login2contacts" sender:nil]; // Segue必须由来源控制器来执行,也就是说,这个perform方法必须由来源控制器来调用
performSegueWithIdentifier:sender:方法的完整执行过程
根据identifier去storyboard中找到对应的线,新建UIStoryboardSegue对象设置Segue对象的sourceViewController(
来源控制器)
新建并且设置Segue对象的destinationViewController(
目标控制器)
调用sourceViewController的下面方法,做一些跳转前的准备工作并且传入创建好的Segue对象
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender; // 这个sender是当初performSegueWithIdentifier:sender:中传入的sender
调用Segue对象的- (void)perform;方法开始执行界面跳转操作
如果segue的style是push
取得sourceViewController所在的UINavigationController
调用UINavigationController的push方法将destinationViewController压入栈中,完成跳转
如果segue的style是modal
调用sourceViewController的presentViewController方法将destinationViewController展示出来
控制器之间的传值
顺传
来源控制器往目标控制器传值来源控制器中用模型存放好数据
在目标控制器中定义模型属性用来接收传输的数据
通过标识找到segou,segou既拥有来源控制器也拥有目标控制器
来源控制器要拿到目标控制器,然后将自己的模型属性赋值给目标控制器的模型属性
实际是在此方法中实现的传值
// 控制器跳转前的准备工作
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender; // 这个sender是当初performSegueWithIdentifier:sender:中传入的sender
逆传
目的控制器往来源控制器传值一般都用代理的方式实现
相关文章推荐
- UIWindow
- iOS入门(二十四)UIView
- Version和Build的区别
- UIScrollView
- hdoj-1242-Rescue【广搜+优先队列】
- UIImageVIew
- UIButton&UILabel
- IOS第八天(4:UITableViewController新浪微博, 代码创建布局和数据转模型)
- UI初识
- Easyui 表格datagrid 的单元格内容显示方式扩展
- Easy UI的树形菜单的异步加载
- FlexBuilder远程调试WEB应用
- 控件学习---UIPageControl---摘自培训资料
- Halton Sequence 原理和代码实现
- 23-IO流-51-IO流(序列流-SequenceInputStream-枚举和迭代)
- 23-IO流-50-IO流(序列流-SequenceInputStream)
- UIScrollView或者UITableView 点击状态栏,回不到顶部的解决办法
- Druid数据库连接池的简单使用
- poj 3715 Blue and Red(二分图最大匹配+字典序输出)
- iOS基础-UIKit框架-高级视图-UIPickerView-实例2:城市选择(列与列之间有关系)