iOS学习之页面之间传值的方式总结
传值三种场景:
1.属性传值(从前往后传)
需求:第二个界面标签显示第一个界面输入框文字.
第一步, 在前一个界面定义属性. (语义属性声明为copy);
第二步, 在进入下一个界面之前,给属性传入数据.
第三步, 在后一个界面读取数据.
2.代理传值(从后往前传)
需求:
第一步:在后一个界面定义协议;并且定义一个方法,有一个参数,参数类型和传值类型一样;
第二步:定义代理属性.语义特性为assign, 类型为id,并且服从协议.id<xxxdelegate>;
第三步:寻找代理对象,(在push之前)为后一个界面指定代理对象为前一个界面.
第四步:服从对应的协议(直接在.m文件延展后服从);
第五步:实现协议中的方法;
第六步:告诉代理对象什么时候(时机)执行协议中的方法(做安全处理,respondsTo);
block传值(从后往前传值)
待完成.
3.间隔多个界面传值: 方式 --- 单例传值(和属性传值类似).
第一步,创建单例类.
第二步:定义创建单例的方法.
+ (Singleton *)mainSingleton;
第三步,定义属性,存储传输的数据.
在.h文件中定义属性
@property (nonatomic, copy) NSString *text; 在.m文件中实现时,要注意加上线程保护.(因为可能会出现单例还没有创建出来的时候,就去执行了访问.单线程可以保证访问之前创建的方法肯定执行完了,也就是单例已经创建出来了.) static Singleton *single = nil;//保证第一次初始化时,能够将单例创建出来.
+ (Singleton *)mainSingleton {
@synchronized(self) {
if (!single) {
single = [[Singleton alloc] init];
}
}
return single;
}
iOS学习之页面之间传值的方式总结的更多相关文章
- ASP.NET页面之间传值的方式之Server.Transfer(个人整理)
Server.Transfer 这个方法相比以前介绍的方法稍微复杂一点,但在页面间值传递中却是特别有用的,使用该方法你可以在另一个页面以对象属性的方式来存取显露的值,当然了,使用这种方法,你需要额外写 ...
- ASP.NET页面之间传值的方式之Cookie(个人整理)
Cookie Cookie 提供了一种在 Web 应用程序中存储用户特定信息的方法.例如,当用户访问您的站点时,您可以使用 Cookie 存储用户首选项或其他信息.当该用户再次访问您的网站时,应用程序 ...
- ASP.NET页面之间传值的方式之Session(个人整理)
Session Session在ASP.NET中,表示客户端(Goggle,Firefox,IE等)与服务器端的会话,用来存储特定会话信息,准确来说,是用来存储特定用户信息.当客户端向服务器发送一个请 ...
- ASP.NET页面之间传值的方式之Application(个人整理)
Application Application变量在整个应用程序生命周期中都是有效的,类似于使用全局变量一样,所以可以在不同页面中对它进行存取.它和Session变量的区别在于,前者是所有的用户共用 ...
- ASP.NET页面之间传值的方式之QueryString(个人整理)
QueryString Querystring也叫查询字符串,这种页面间传递数据是利用网页地址URL.如果要从A页面跳转到B页面,则可以用Request.Redirect(”B.aspx?参数名=参数 ...
- 【转载】ASP.NET页面之间传值的方式之QueryString(个人整理)
转自: https://www.cnblogs.com/kudsu/p/7694637.html QueryString Querystring也叫查询字符串,这种页面间传递数据是利用网页地址URL. ...
- iOS block进行页面之间传值
#import <UIKit/UIKit.h> @interface FirstViewController : UIViewController @property (weak, non ...
- Block作为property属性实现页面之间传值(代替Delegate代理与协议结合的方法)
需求:在ViewController中,点击Button,push到下一个页面NextViewController,在NextViewController的输入框TextField中输入一串字符,返回 ...
- ASP.NET 页面之间传值的几种方式
开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...
随机推荐
- 文本阴影:text-shadow
例如: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8 ...
- Entity Framewor 学习笔记 (碎碎的东西)
Proxy 类代理类是为了让EF实现lazy load才需要的 public class BloggingContext : DbContext { public BloggingContex ...
- Large sum
聪明的办法是想:求前10位,那只要前8位加起来,进2位就OK. 本的办法,就是真的加起来,截前面10位.如我. numList = str.split() sum = 0 for i in range ...
- VC++中调用cmd的集中方式
1. system方法: 原型: int __cdecl system(const char *); 例如: system("ipconfig"); 2. WinExec方法: 相 ...
- mkbundle(1) - Linux man page
mkbundle(1) - Linux man page Name mkbundle, mkbundle2 - Creates a bundled executable. Synopsis mkbun ...
- 8.2.1.2 How MySQL Optimizes WHERE Clauses MySQL 优化WHERE 子句
8.2.1.2 How MySQL Optimizes WHERE Clauses MySQL 优化WHERE 子句 本节讨论优化用于处理WHERE子句, 例子是使用SELECT 语句,但是相同的优化 ...
- Linux企业级项目实践之网络爬虫(26)——线程池
一旦有一个抓取请求开始,就创建一个新的线程,由该线程执行任务,任务执行完毕之后,线程就退出.这就是"即时创建,即时销毁"的策略.尽管与创建进程相比,创建线程的时间已经大大的缩短,但 ...
- 【转】在Ubuntu 12.04 上为Virtualbox 启用USB 设备支持--不错
原文网址:http://www.cnblogs.com/ericsun/archive/2013/06/10/3130679.html 虚拟机我一直在用,不是说离不开Windows,而是有些时候一些应 ...
- 【转】你应该知道的 10 个 VirtualBox 技巧与高级特性
原文网址:http://www.oschina.net/translate/10-virtualbox-tricks-and-advanced-features-you-should-know-abo ...
- 【翻译】五步快速使用LINQPad尝鲜StreamInsight
StreamInsight 学习地址:http://www.cnblogs.com/StreamInsight/archive/2011/10/26/StreamInsight-Query-Seri ...