文档章节

界面间的传值问题

 寻游
发布于 2015/09/06 11:35
字数 702
阅读 17
收藏 0
//界面间的传值:

	1、代理传值:(谁要值谁就是代理);

			(1)在代理文件中,设置代理,并实现协议中的方法;

			(2)在传值的界面中,拥有一个代理属性,并使用代理属性调用代理的方法;进行传值;

	2、属性传值:谁需要值,就要在谁中,声明一个属性变量:来接受传入的值,并进行显示;

	3、 block传值:(谁要值,就把block的实现写在谁那里)(与代理类似)

			(1)将block声明称属性(注意:要用copy修饰)(原因:block函数分布在桟区,当我们在其他的页面中调用时,

				有可能被系统释放,造成野指针的内存问题,使用copy将其复制到堆区,进行手动的管理,可以避免野指针访问的问题)

			   (以便在其他的界面中使用)与 调用(要传值的那个界面)

		      (2)  //获取上一个页面的视图控制器 的对象;(数组)viewControllers  
    	
			RootViewController * controller = (RootViewController *)self.navigationController.viewControllers[0];

		  (3)要注意block的方法体的实现与调用的顺序:为了避免在调用时, block方法为实现的问题,经常在调用时,使用[要传值界面的对象    view]的方式;

			//block在使用的过程中会引起引用计数加 1 的问题,造成内存泄露(循环引用)的问题;
 	
			//当block中用到self,以及实例变量时,一般使用__block进行修饰,来避免引用计数+1 的问题;
 
			//例如:
 
 					__block FirstViewController * firstVC = self;
     
  					  firstVC.block = ^(NSString * text){
         
     						firstVC.title = text;
   					 };
     

			
	4、单例传值:单例的声明:给其添加一个同步锁;与此同时,要将其设置为一种静态变量:

//工程里面只有一个实例对象(与程序同寿),并且不能被释放,销毁;

//单例 的使用场景:

//1、音乐播放器;(切换时,音乐不会停止);

//2、当有多个页面需要共同资源,可以将次资源放入单例对象中;

//(1)获取单例对象;

// (2)再取出单例对象的值;

//方法名: 如果方法名以standarxxx; onlyxxxx; defaultxxx; sharedxxx;开头,则表示为获取单例对象的方法;返回值为对象;为类方法;

方式如下:假设单例类为:DataHandle;

+ (DataHandle *)sharedInstance{
    
    //同步锁(为了避免多个线程同时访问同一个额资源,导致资源不同;)
    static DataHandle *  dataHandle = nil;
    
    @synchronized(self){

        if (dataHandle  ==  nil ) {
            
            dataHandle  = [[DataHandle  alloc] init];
            
            [dataHandle  readPlist];
        }
    }
    return dataHandle ;
 }
	5、target…..action 传值:

		(1)在传出段端要使用:[_target performSelector:_action withObject:self];

		  并声明相应的属性:(id)target (SEL)action;并在相应的方法中进行调用;
			
		 (2)在接收端:给相应的属性赋值,并实现action的方法;如:_touchView2.target1 = self; _touchView2.action1 = @selector(pan);


© 著作权归作者所有

粉丝 0
博文 5
码字总数 2004
作品 0
东城
私信 提问
Fragment(九)——Fragment与Fragmnet之间的交互

前言 fragment 和 activity 间的交互之前已经讲过了,这篇文章我们来讲讲 Fragment 和 fragment 间传值的问题。 今天的内容有: 概述Fragment与Fragment之间传值的几种方式 Fragment通过bun...

奔跑的佩恩
07/23
0
0
Fragment(12)——startActivityForResult的使用

前言 在 Fragment的使用中,我们有时会用到 startActivityForResult 用于数据的回传,当Activity 中嵌套了 Fragment,Fragment 怎么接收到回传的值呢?它和 activity间值得回传有什么区别呢?...

奔跑的佩恩
08/13
0
0
仿网易云课堂微信小程序开发实战过程记录

仿网易云课堂微信小程序开发实战过程记录。首先大概介绍下这个小程序所涉及到的主要技术点:微信登录、微信支付、微信小程序Flex布局以及微信小程序视频播放器的使用。 首先,任何一个微信小...

网易云课堂
2017/10/26
0
0
确认过眼神,这就是你要的路由库

上一篇文章我们谈到了如何实现一个路由库,那本篇文章就给大家推荐一个好用的路由库,来确认下眼神,这就是你要的路由库。 EasyRouter:一个简单、稳定、强大、高性能的组件化路由框架。git...

浅吟且行的未来
2018/05/31
0
0
四种传值方法(通知、block、属性、NSUserDefaults)

1、 通知传值-一般常用于返回界面的时候,把返回前界面的值传到返回后界面。 //前一个界面//注册通知 } //执行通知方法 (void) notification:(NSNotification *)notifi{ }//移除通知-(void)...

纯粹的code
02/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

医疗项目pc端后台页面用vue重构整个html页面

页面源码是vue

xintaiideas
27分钟前
1
0
领域驱动中的“贫血症和失忆症” --实践领域驱动--原文

贫血症严重危害着人类健康,并且伴随有危险的副作用。当贫血领域对象被首次提出来时,它并不是一个博得赞美的词汇,它描述的是一个缺少内在行为领域对象。奇怪的是,人们对于贫血领域对象的态...

还仙
30分钟前
5
0
条码打印软件中标签预览正常打印无反应怎么解决

在使用条码打印软件制作标签时,有客户反馈,标签打印预览正常的,但是打印无反应,咨询是怎么回事?今天针对这个情况,可以参考以下方法进行解决。 一、预览正常情况下,打印没反应 (1)在条码...

中琅软件
40分钟前
5
0
判断字符串的时候

判断字符串的时候一定把常量房前边, //报警程度 String leve = vo.getDeviceAlertDeal().getWarnLevel(); if(("0").equals(leve)) { row.add("无报警"); }else if(("1").equals(leve)) { ro......

简小姐
40分钟前
7
0
Linux maven3.6.2 install

PS:安装 maven 之前请先安装 jdk 1.安装 wget 命令(安装过就不用了) yum -y install wget 2.寻找需要的 maven 版本 https://maven.apache.org/download.cgi 3.进入 /var/local 文件夹 cd...

东方神祇
43分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部