七, seg(属性)

来源:互联网 发布:fm球员在线数据库 编辑:程序博客网 时间:2024/06/04 19:17

什么是Segue

Storyboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue)
这里写图片描述

Segue的属性

每一个Segue对象,都有3个属性:

  • 唯一标识
@property (nonatomic, readonly) NSString *identifier;
  • 来源控制器
@property (nonatomic, readonly) id sourceViewController;
  • 目标控制器
 @property (nonatomic, readonly) id destinationViewController;

这里写图片描述

自动型Segue

按住Control键,直接从控件拖线到目标控制器

这里写图片描述

点击“登录”按钮后,就会自动跳转到右边的控制器

如果点击某个控件后,不需要做任何判断,一定要跳转到下一个界面,建议使用“自动型

手动

按住Control键,从来源控制器拖线到目标控制器

手动型的Segue需要设置一个标识(如图)
这里写图片描述

在恰当的时刻,使用perform方法执行对应的Segue

[self performSegueWithIdentifier:@"login2contacts" sender:nil];

Segue必须由来源控制器来执行,也就是说,这个perform方法必须由来源控制器来调用

注:*如果点击某个控件后,需要做一些判断,也就是说:满足一定条件后才跳转到下一个界面,建议使用“手动型Segue”*

重要函数(处理跳转前的操作)

performSegueWithIdentifier:sender:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;// 这个sender是当初performSegueWithIdentifier:sender:中传入的sender
  1. 调用Segue对象的- (void)perform;方法开始执行界面跳转操作
  2. 如果segue的style是push
  3. 取得sourceViewController所在的UINavigationController
  4. 调用UINavigationController的push方法将、
  5. destinationViewController压入栈中,完成跳转
  6. 如果segue的style是modal:
    调用sourceViewController的presentViewController方法将destinationViewController展示出来

顺传值

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender  {      NSLog(@"触发该的sender对象是:%@",[sender class]);  // kvo 传值      UIViewController *destinationController=[segue destinationViewController];      [destinationController setValue:@"119" forKey:@"number"];  // 使用属性传值,需导入相关的类.h   TestViewController *bC=[segue destinationViewController];    bC.number=@188;  }  
0 0
原创粉丝点击