iOS——Segue的使用
2016-04-09 22:17
447 查看
Segue的属性
•每一个Segue对象,都有3个属性
Ø唯一标识
@property (nonatomic,
readonly) NSString*identifier;
Ø来源控制器
@property (nonatomic,
readonly) idsourceViewController;
Ø目标控制器
@property (nonatomic,
readonly) iddestinationViewController;
——————————————————————————————————————————————————————————————————————————
Segue的类型
•根据Segue的执行(跳转)时刻,Segue可以分为2大类型
Ø自动型:点击某个控件后(比如按钮),自动执行Segue,自动完成界面跳转
eg:
•点击“登录”按钮后,就会自动跳转到右边的控制器
•
•如果点击某个控件后,不需要做任何判断,一定要跳转到下一个界面,建议使用“自动型Segue”
Ø手动型:需要通过写代码手动执行Segue,才能完成界面跳转
•手动型的Segue需要设置一个标识
•在恰当的时刻,使用perform方法执行对应的Segue
[self performSegueWithIdentifier:@"login2contacts"sender:nil];
// Segue必须由来源控制器来执行,也就是说,这个perform方法必须由来源控制器来调用
•如果点击某个控件后,需要做一些判断,也就是说:满足一定条件后才跳转到下一个界面,建议使用“手动型Segue”
•利用performSegueWithIdentifier:方法可以执行某个Segue,完成界面跳转
•——————————————————————————————————————————————————————————————————————————
•接下来研究performSegueWithIdentifier:sender:方法的完整执行过程
[self performSegueWithIdentifier:@“login2contacts”
sender:nil];
// 这个self是来源控制器
1.根据identifier去storyboard中找到对应的线,新建UIStoryboardSegue对象
Ø设置Segue对象的sourceViewController(来源控制器)
新建并且设置Segue对象的destinationViewController(目标控制器)
2.调用sourceViewController的下面方法,做一些跳转前的准备工作并且传入创建好的Segue对象
- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender;
// 这个sender是当初performSegueWithIdentifier:sender:中传入的sender
3.调用Segue对象的- (void)perform;方法开始执行界面跳转操作
Ø取得sourceViewController所在的UINavigationController
Ø调用UINavigationController的push方法将destinationViewController压入栈中,完成跳转
——————————————————————————————————————————————————————————————————————————
控制器的数据传递
•控制器之间的数据传递主要有2种情况:顺传和逆传
Ø顺传
n控制器的跳转方向: A -> C
n数据的传递方向 : A ->C
n数据的传递方式 : 在A的prepareForSegue:sender:方法中根据segue参数取得destinationViewController,也就是控制器C,直接给控制器C传递数据
(要在C的viewDidLoad方法中取得数据,来赋值给界面上的UI控件)
Ø逆传
n控制器的跳转方向: A-> C
n数据的传递方向 : C -> A
n数据的传递方式 : 让A成为C的代理, 在C中调用A的代理方法,通过代理方法的参数传递数据给A
•每一个Segue对象,都有3个属性
Ø唯一标识
@property (nonatomic,
readonly) NSString*identifier;
Ø来源控制器
@property (nonatomic,
readonly) idsourceViewController;
Ø目标控制器
@property (nonatomic,
readonly) iddestinationViewController;
——————————————————————————————————————————————————————————————————————————
Segue的类型
•根据Segue的执行(跳转)时刻,Segue可以分为2大类型
Ø自动型:点击某个控件后(比如按钮),自动执行Segue,自动完成界面跳转
eg:
•点击“登录”按钮后,就会自动跳转到右边的控制器
•
•如果点击某个控件后,不需要做任何判断,一定要跳转到下一个界面,建议使用“自动型Segue”
Ø手动型:需要通过写代码手动执行Segue,才能完成界面跳转
•手动型的Segue需要设置一个标识
•在恰当的时刻,使用perform方法执行对应的Segue
[self performSegueWithIdentifier:@"login2contacts"sender:nil];
// Segue必须由来源控制器来执行,也就是说,这个perform方法必须由来源控制器来调用
•如果点击某个控件后,需要做一些判断,也就是说:满足一定条件后才跳转到下一个界面,建议使用“手动型Segue”
•利用performSegueWithIdentifier:方法可以执行某个Segue,完成界面跳转
•——————————————————————————————————————————————————————————————————————————
•接下来研究performSegueWithIdentifier:sender:方法的完整执行过程
[self performSegueWithIdentifier:@“login2contacts”
sender:nil];
// 这个self是来源控制器
1.根据identifier去storyboard中找到对应的线,新建UIStoryboardSegue对象
Ø设置Segue对象的sourceViewController(来源控制器)
新建并且设置Segue对象的destinationViewController(目标控制器)
2.调用sourceViewController的下面方法,做一些跳转前的准备工作并且传入创建好的Segue对象
- (void)prepareForSegue:(UIStoryboardSegue*)segue sender:(id)sender;
// 这个sender是当初performSegueWithIdentifier:sender:中传入的sender
3.调用Segue对象的- (void)perform;方法开始执行界面跳转操作
Ø取得sourceViewController所在的UINavigationController
Ø调用UINavigationController的push方法将destinationViewController压入栈中,完成跳转
——————————————————————————————————————————————————————————————————————————
控制器的数据传递
•控制器之间的数据传递主要有2种情况:顺传和逆传
Ø顺传
n控制器的跳转方向: A -> C
n数据的传递方向 : A ->C
n数据的传递方式 : 在A的prepareForSegue:sender:方法中根据segue参数取得destinationViewController,也就是控制器C,直接给控制器C传递数据
(要在C的viewDidLoad方法中取得数据,来赋值给界面上的UI控件)
Ø逆传
n控制器的跳转方向: A-> C
n数据的传递方向 : C -> A
n数据的传递方式 : 让A成为C的代理, 在C中调用A的代理方法,通过代理方法的参数传递数据给A
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- iOS推送的那些事
- IOS 改变键盘颜色代码