[iOS基础控件 - 6.11.4] storyboard 的 Segue

A.概念

storyboard中的跳转事件连线,都是一个UIStoryboardSegue对象(Segue)

来源控制器

触发控制器

目标控制器

跳转到的控制器

Segue的属性:

每一个Segue对象,都有3个属性
唯一标识
@property (nonatomic, readonly) NSString *identifier;
来源控制器
@property (nonatomic, readonly) id sourceViewController;
目标控制器

@property (nonatomic, readonly) id destinationViewController;

B.种类

1.自动型

action segue

使用控件连线

不需要进行条件判断的跳转(比如按钮)

设置方法:按Control,拖线从控件(开关、按钮等)到目标控制器

2.手动型 Manual

manual segue

使用控制器连线

需要进行一定的条件判断的跳转(使用代码)

手动的Segue需要设置标识,在制定的时候在来源控制器执行Segue

sample:

1         // 根据Segue ID 执行跳转
2         [self performSegueWithIdentifier:@"contactList" sender:nil];

3.传递数据

在Segue准备好,跳转之前执行来源控制器的方法,使用成员属性传递数据

prepareForSegue: sender:

sample:

 1 #pragma mark - Segue相关
 2 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
 3     // 取得目标控制器
 4     id controller = segue.destinationViewController;
 5
 6     // 判断跳转目标
 7     if ([controller isKindOfClass:[AddViewController class]]) {
 8         // 如果是“添加联系人”
 9         AddViewController *addViewController = controller;
10         addViewController.delegate = self;
11     }
12
13     if ([controller isKindOfClass:[EditViewController class]]) {
14         // 如果是“查看/编辑联系人”
15         EditViewController *editViewController = controller;
16
17         // 取出数据
18         NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
19         editViewController.contact = self.contacts[indexPath.row];
20
21         // 设置代理
22         editViewController.delegate = self;
23     }
24
25 }

控制器之间的数据传递主要有2种情况:顺传和逆传
顺传
控制器的跳转方向: A  C
数据的传递方向    : A  C
数据的传递方式    :  在A的prepareForSegue:sender:方法中根据segue参数取得destinationViewController, 也就是控制器C, 直接给控制器C传递数据

(要在C的viewDidLoad方法中取得数据,来赋值给界面上的UI控件)

逆传
控制器的跳转方向: A  C
数据的传递方向    : C  A
数据的传递方式    :  让A成为C的代理, 在C中调用A的代理方法,通过代理方法的参数传递数据给A

时间: 2024-10-10 07:01:38

[iOS基础控件 - 6.11.4] storyboard 的 Segue的相关文章

[iOS基础控件 - 6.11.3] 私人通讯录Demo 控制器的数据传递、存储

A.需求 1.搭建一个“私人通讯录”Demo 2.模拟登陆界面 账号 密码 记住密码开关 自动登陆开关 登陆按钮 3.退出注销 4.增删改查 5.恢复数据(取消修改) B.基本架构 1. 5个控制器 (1)导航控制器 NavigationController (2)登陆 UIViewController 输入账号密码 记住密码.自动登录开关 登陆跳转按钮 (3)联系人列表 TableViewController 注销功能 添加联系人跳转按钮 (4)添加联系人 UIView (5)查看.编辑 UI

【iOS 基础控件 -16 】 UIStoryboardSegue对象(Segue)

A.概念 storyboard中的跳转事件连线,都是一个UIStoryboardSegue对象(Segue) 来源控制器 触发控制器 目标控制器 跳转到的控制器 Segue的属性: 每一个Segue对象,都有3个属性唯一标识@property (nonatomic, readonly) NSString *identifier;来源控制器@property (nonatomic, readonly) id sourceViewController;目标控制器 @property (nonatom

[iOS基础控件 - 6.11.2] - UINavigationController 多控制器 简单使用

A.概念 1.通常一个app有多个控制器 2.需要对这些控制器进行管理 3.有多个view的时候,用一个父view去管理多个子view 4.控制器管理也是如此,使用给一个父控制器,去控制子控制器 为了方便管理控制器,系统提供了两个控制器 UINavigationController UITabBarController B.UINavigationController的使用 UINavigationController的使用步骤初始化UINavigationController设置UIWindo

[iOS基础控件 6.11.1] - 控制器 & 控制器view

A.控制器的创建 控制器常见的创建方式有以下几种通过storyboard创建 直接创建 1 ViewController *vc = [[ViewController alloc] init]; xib设置了class后,当xib的文件名跟controller类名一样的时候,用这个方法默认就会加载xib中的controller 指定xib文件来创建 1 ViewController *vc = [[ViewController alloc] initWithNibName:@"ViewContr

[iOS基础控件 - 6.11.5] 沙盒 & 数据存储

A.沙盒 每个APP都有一个沙盒,是独立存在的 1.Xcode5和Xcode6的模拟器文件目录 a.模拟器路径改版 (1)Xcode5中模拟器路径为:/Users/用户名/Library/Application Support/iPhone Simulator (2)Xcode6中模拟器路径为:/Users/用户名/ Library/Developer/CoreSimulator 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 b.沙盒路径改版 (1)Xcode5中沙盒的路径

[iOS基础控件 - 5.5] 代理设计模式 (基于”APP列表"练习)

A.概述 在"[iOS基础控件 - 4.4] APP列表 进一步封装,初见MVC模式”上进一步改进,给“下载”按钮加上效果.功能 1.按钮点击后,显示为“已下载”,并且不可以再按 2.在屏幕中间弹出一个消息框,通知消息“xx已经被安装”,慢慢消失 3.消息框样式为圆角半透明 B.不使用代理模式,使用app空间组和主View之间的父子View关系 1.在主View中创建一个消息框 主View控制器:ViewController.m 1 // 创建下载成功消息框 2 CGFloat labelWid

iOS基础控件UINavigationController中的传值

iOS基础控件UINavigationController中的传值,代理传值,正向传值,反向传值 #import <UIKit/UIKit.h> //声明一个协议 @protocol SendValue<NSObject> //定义一个方法 - (void)sendBtnTitle:(NSString *)title; @end @interface FirstViewController : UIViewController // 定义代理 @property (nonatomi

ios基础控件之开关按钮(UISwitch)

UISwitch控件是iOS开发的基础控件,是非常简单的一个控件,因为它的方法比较少.UISwitch继承于UIControl基类,因此可以当成活动控件使用. 注意:开关状态通过它的on属性进行读取,该属性是一个BOOL属性 创建: UISwitch* mySwitch = [[ UISwitch alloc]initWithFrame:CGRectMake(0.150.0f,100.0f,0.0f,0.0f)]; 可能你会疑问为什么它的大小都设置为0?没错,它的大小你设置是无效的,系统会为你分

【iOS基础控件 - 11】【Demo】模仿qq ,微信 UI 聊天界面

A.需求 做出一个类似于QQ.微信的聊天界面 1.每个cell包含发送时间.发送人(头像).发送信息 2.使用对方头像放在左边,我方头像在右边 3.对方信息使用白色背景对话框,我方信息使用蓝色背景对话框 4.隐藏相同的发送时间 5.底部功能按钮:语音按钮.消息输入框.表情按钮.附加按钮 6.响应键盘事件,呼出键盘.隐藏键盘时对上述的视图作出上移操作 7.键盘的发送事件处理 Code Source: B.实现点 1.底层视图搭建 上部分聊天信息框:UITableView 下部分功能区:UIButt