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块 一对一(优点   高效快速)

首先 在第二个界面定义一个block块
两种定义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;

这里两个需要连起来使用

基本和第一种写法一致 
 

通知 一对多

//NSNotificationCenterdefaultCente //创建通知

//添加一个响应者  通知中心 最后一个参数具体对象或者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传值的几种方式的更多相关文章

  1. ASP.NET 页面之间传值的几种方式

    开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...

  2. 第三节:Action向View传值的四种方式(ViewData、ViewBag、TempData、Model)

    简  介 在前面的章节中,我们已经很清楚,MVC工作模型的流程,Controller中的Action接收到客户端的请求,处理后要将数据返回给View,那么Action中是如何将数据返回给View的,二 ...

  3. 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  4. MVC5控制器传值的三种方式(ViewData,ViewBag,TempData),刚刚学习MVC5的新手,希望各位大神多多指教

    mvc传值的三种方式:1.ViewData 在使用过程中需要类型转换 例子: ViewData["MyTitle"]="ViewData传值"; 引用: @Vi ...

  5. EF5+MVC4系列(7) 后台SelectListItem传值给前台显示Select下拉框;后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式(ViewDate,TempDate,ViewBag,Model (实际是ViewDate.Model传值))

    一:后台使用SelectListItem 传值给前台显示Select下拉框 我们先来看数据库的订单表,里面有3条订单,他们的用户id对应了 UserInfo用户表的数据,现在我们要做的是添加一个Ord ...

  6. MVC中控制器向视图传值的四种方式

    MVC中的控制器向视图传值有四种方式分别是 1 ViewDate  2.ViewBag   3.TempDate  4.Model 下面分别介绍四种传值方式 首先先显示出控制器中的代码 using S ...

  7. ASP.NET页面间传值的几种方式

    ASP.NET页面间传值的几种方式 1.使用QueryString 使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在 ...

  8. vue传值的几种方式

    props:适用于 父组件 ==> 子组件 通信 由父组件传值子组件在props中接收即可: (由父组件给子组件传递 函数类型 的props可实现 子组件 ==> 父组件 传递数据,较为繁 ...

  9. Action向视图传值的6种方式

    在使用ASP.NET MVC进行项目开发时,经常会碰到从Action向视图传值的问题,今天我就把我所知道的方式总结了一下,分成了以下六种: 1.使用ViewData进行传值 在Action中,有如下代 ...

随机推荐

  1. swift约束框架SnapKit使用

    一.Swift - 自动布局库SnapKit的使用详解1(配置.使用方法.样例)   为了适应各种屏幕尺寸,iOS 6后引入了自动布局(Auto Layout)的概念,通过使用各种 Constrain ...

  2. 独立成分分析(ICA)在fMRI数据处理时timecourse的理解

    来源: http://blog.sciencenet.cn/blog-479412-434990.html   在处理fMRI数据时,使用空间ICA的方法.将一个四维的fMRI数据分解为空间patte ...

  3. 查看mysql表结构和表创建语句的方法(转)

    查看mysql表结构的方法有三种:1.desc tablename;例如:要查看jos_modules表结构的命令:desc jos_modules;查看结果:mysql> desc jos_m ...

  4. [win]系统优化工具dism++

    系统优化工具, 确实能将c盘扩大个2-3g. 主要是删除日志 优化系统等功能. https://www.chuyu.me/

  5. mysql ERROR 1045 (28000): Access denied for user解决方法

    一 这种情况下是 root@% update mysql.user set host='%' where user='root' and host='localhost'; flush privile ...

  6. QT 数据库编程四

    //vmysql.cpp #include "vmysql.h" #include <QMessageBox> Vmysql::Vmysql() { mysql_ini ...

  7. scala 学习笔记(03) 参数缺省值、不定个数参数、类的属性(Property)、泛型初步

    继续学习,这一篇主要是通过scala来吐槽java的,同样是jvm上的语言,差距咋就这么大呢? 作为一个有.NET开发经验的程序员,当初刚接触java时,相信很多人对java语言有以下不爽(只列了极小 ...

  8. XStream、JAXB 日期(Date)、数字(Number)格式化输出xml

    XStream.Jaxb是java中用于对象xml序列化/反序列化 的经典开源项目,利用它们将对象转换成xml时,经常会遇到日期(Date).数字按指定格式输出的需求,下面是使用示例: 一.日期字段格 ...

  9. Autofac中的属性注入功能使用

    使用依赖注入容器时,大部分都是使用构造函数来注入或者是xml配置文件.也有很多支持属性注入.Autofac就是其中一个. 1 为什么要有属性注入? 对于一些使用特频繁的类或者方法,很多类都会用到,那么 ...

  10. denounce函数:Javascript中如何应对高频触发事件

    在DOM Event的世界中,以scroll.resize.mouseover等为代表的高频触发事件显得有些与众不同.通常,DOM事件只有在明确的时间点才会被触发,比如被点击,比如XMLHttpReq ...