iOS——Segue的使用

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



你可能感兴趣的:(iOS——Segue的使用)