IOS传值的几种方式
1.代理 一对一
在第二个页面设置代理
1.1在最上方设置
//选择房间的代理
@protocol RoomVCDelegate <NSObject>
1.2设置代理方法
//方法
-(void)selectRoomName:(NSString *)name;
1.3定义委托对象
@property (nonatomic,assign)id<RoomVCDelegate>delegate;
在第一个页面(添加代理方法)
需要设置 代理对象
self.delegate= self;
调用代理方法 把传值对象赋值
-(void)selectRoomName:(NSString *)name{
最后就是把要穿的值(在第二个界面调用 )
[_delegateselectRoomName:@"文化轩"];
2.block块 一对一(优点 高效快速)
@property (nonatomic,copy)void (^backValues)(NSString *str);
在第二个页面定义完后 把值付给block方法
self.backValues(@"大歌星");
在第一个页面 获取到第二个页面的对象 这个时候就只能用self获取 第一个页面的ui控件
Vc.backValues=^(NSString *str){
[self.buttonsetTitle:strforState:UIControlStateNormal];
};
使用block是应注意以下几个方面 以下几个例子
__block是用空间的 因为是异步的必须用__block
__blockUIImage *image1 =nil;
//__weak避免循环引用
__weakViewController *weakSelf =self;
dispatch_group_async(group, groupT, ^{
image1 = [weakSelf downloadImage:@"http://a.hiphotos.baidu.com/image/pic/item/8644ebf81a4c510f19c75c136259252dd42aa5bc.jpg"];
});
__blockUIImage *image2 =nil;
__weakViewController *weakSelf2 =self;
dispatch_group_async(group, groupT, ^{
image2 = [weakSelf2 downloadImage:@"http://a.hiphotos.baidu.com/image/pic/item/8644ebf81a4c510f19c75c136259252dd42aa5bc.jpg"];
});
//主线程就不需要用__block
dispatch_group_notify(group,dispatch_get_main_queue(), ^{
_image1.image = image1;
_image2.image = image2;
});
第二种第一方式
typedef void(^Block) (int,NSString*);
@property (nonatomic,assign)Block block;
这里两个需要连起来使用
通知 一对多
//添加一个响应者 通知中心 最后一个参数具体对象或者nilnil是这一类对象发生改变就会改变
[[ NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(textChange:)name:UITextFieldTextDidChangeNotificationobject:textField];}];
object 响应者
////移除通知中心
[[NSNotificationCenterdefaultCenter]removeObserver:selfname:UITextFieldTextDidChangeNotificationobject:alert.textFields.firstObject];
4.正向传值(比较简单不在详细举例)
5.storyboard 传值 利用segue
5.1在storyboard 建立连线器
5.2在segue设置标识
5.3根据segue找到相应的连线器
在 这个方法中
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
比如在第二个界面需要接数据以一个全局的model模型
传过去的是一个model模型
if ([segue.identifier isEqualToString:@"one"]) {
menuModel *model = [_rowArray[_currentSection]objectAtIndex:_selectRow];
detailViewController *Vc = segue.destinationViewController;
Vc.model = model;
}else if ([segue.identifier isEqualToString:@"two"]){
menuModel *model = [_rowArray[_currentSection]objectAtIndex:_selectRow];
detailViewController *Vc = segue.destinationViewController;
Vc.model = model;
}
}
直接在第二个界面 用model模型去赋值
IOS传值的几种方式的更多相关文章
- ASP.NET 页面之间传值的几种方式
开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...
- 第三节:Action向View传值的四种方式(ViewData、ViewBag、TempData、Model)
简 介 在前面的章节中,我们已经很清楚,MVC工作模型的流程,Controller中的Action接收到客户端的请求,处理后要将数据返回给View,那么Action中是如何将数据返回给View的,二 ...
- 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- MVC5控制器传值的三种方式(ViewData,ViewBag,TempData),刚刚学习MVC5的新手,希望各位大神多多指教
mvc传值的三种方式:1.ViewData 在使用过程中需要类型转换 例子: ViewData["MyTitle"]="ViewData传值"; 引用: @Vi ...
- EF5+MVC4系列(7) 后台SelectListItem传值给前台显示Select下拉框;后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式(ViewDate,TempDate,ViewBag,Model (实际是ViewDate.Model传值))
一:后台使用SelectListItem 传值给前台显示Select下拉框 我们先来看数据库的订单表,里面有3条订单,他们的用户id对应了 UserInfo用户表的数据,现在我们要做的是添加一个Ord ...
- MVC中控制器向视图传值的四种方式
MVC中的控制器向视图传值有四种方式分别是 1 ViewDate 2.ViewBag 3.TempDate 4.Model 下面分别介绍四种传值方式 首先先显示出控制器中的代码 using S ...
- ASP.NET页面间传值的几种方式
ASP.NET页面间传值的几种方式 1.使用QueryString 使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在 ...
- vue传值的几种方式
props:适用于 父组件 ==> 子组件 通信 由父组件传值子组件在props中接收即可: (由父组件给子组件传递 函数类型 的props可实现 子组件 ==> 父组件 传递数据,较为繁 ...
- Action向视图传值的6种方式
在使用ASP.NET MVC进行项目开发时,经常会碰到从Action向视图传值的问题,今天我就把我所知道的方式总结了一下,分成了以下六种: 1.使用ViewData进行传值 在Action中,有如下代 ...
随机推荐
- iOS 使用证书时遇到的错误一
证书概念: 那么现在就牵扯到几个名词,Development证书,aps_Development证书(推送证书),测试描述文件,AppID,同理也就有Distribution证书,aps_Distri ...
- HTML DOM 元素对象
HTML DOM 元素对象 HTML DOM 节点 在 HTML DOM (Document Object Model) 中, 每个东西都是 节点 : 文档本身就是一个文档对象 所有 HTML 元素都 ...
- 快速判断素数 --Rabin-Miller算法
以前我在判断素数上一直只会 sqrt(n) 复杂度的方法和所谓的试除法(预处理出sqrt(n)以内的素数,再用它们来除). (当然筛选法对于判断一个数是否是素数复杂度太高) 现在我发现其实还有一种方法 ...
- Windows 8.1 新增控件之 CommandBar
上一篇为大家介绍了AppBar 的相关内容,本篇继续介绍CommandBar 的使用方法.与AppBar 相比而言,CommandBar 在开发使用方面较为单一,在按键布局上分为主控区(Primary ...
- mongodb分布式查询
分布式查询:mongodb的分布式模型分为replica set和sharded cluster. sharded集群中将read根据sharding key(分片键)转发到指定的shard节点,re ...
- HP “云图”GPU虚拟化工作站解决方案
HP PCS ”云图”GPU虚拟化工作站解决方案 ——将图形计算从桌面移到数据中心 惠普云图形GPU虚拟化桌面系统是以用户为中心的私有云服务.除了保留了传统桌面虚拟化方案以集中设备为中心统一管理等优点 ...
- top状态及其常用技巧
看tcp状态 /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' 在 top 状态下,按 "shif ...
- C# 多重overide
overide 是覆盖的意思,用在且仅用在虚函数上,虚函数可以是virtual或abstract修饰的,或者是overide修饰的. 文档大概是这么说的. 由此知道,由overide修饰的函数都是虚函 ...
- eclipse: workspace出错导致无法启用的解决
通常我们会在eclipse中创建多个workspace,比如一个用于学习,一个用于工作... ,因为种种原因,时不时会发现eclipse切换workspace后启动失败,提示让你去看workspace ...
- 【6年开源路】海王星给你好看!FineUI v4.0正式版暨《FineUI3to4一键升级工具》发布!
去年10-28号,我发布了一篇文章<海王星给你好看!FineUI v4.0公测版发布暨<你找BUG我送书>活动开始>,标志着FineUI开始向4.0版本迈进.经过4个月3个公测 ...