iOS 开发各种传值
2019独角兽企业重金招聘Python工程师标准>>>
一. 属性传值(正向):
1. 在第二个界面声明属性
@property(nonatomic,strong)NSString*str;2. 在第一个界面执行跳转时赋值
second.str=@"属性传值";3. 取值
nslog(@"%@",str);
二. Block传值(反向)
//1 第二个界面.h文件定义block
@property(nonatomic,assign)void(^block)(NSString*);
//2 第二个界面.m文件赋值
self.block(@"block传值");
//3 第一个界面.m文件调用
SecondViewController*second=[[SecondViewController alloc]init];second.block=^(NSString*value){NSLog(@"%@",value);};
二. 代理传值(正向传值为例):
/*1*/在FirstViewController.h中
#import <UIKit/UIKit.h>// 声明协议
@protocol PassWordDelegate-(void)passWordDelegate:(NSString*)str;@end@interface FirstViewController : UIViewController
// 设置代理属性
@property(nonatomic,retain)id<PassWordDelegate>delegate;@end/*2*/在FirstViewController.m中
#import "SecondViewController.h"//点击方法
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{SecondViewController*second=[[SecondViewController alloc]init];self.delegate=second;//指定代理[self.delegate passWordDelegate:@"代理传值"];//代理传值[self presentViewController:second animated:NO completion:nil];
}/*3*/遵循协议/*4*/在SecondViewController.m中
//执行协议方法,接收传过来的值
-(void)passWordDelegate:(NSString *)str
{NSLog(@"%@",str);
}
三 单例传值:
单例传值可以理解为定义一个全局变量进行传值
//1 新建一个单例类,在.h文件中
#import <Foundation/Foundation.h>@interface Singleton : NSObject
//声明属性(可设置多个属性)
@property(nonatomic,strong)NSString*passData;+(instancetype)sharedSingleton;@end//2 在.m文件中初始化单例
static Singleton*singleton=nil;
//创建单例
+(instancetype)sharedSingleton{if (singleton==nil) {singleton=[[Singleton alloc]init];}return singleton;
}//3 赋值NSString*str=@"单例传值";Singleton*single=[Singleton sharedSingleton];single.passData=str;//4 取值Singleton*single=[Singleton sharedSingleton];NSLog(@"***%@",single.passData);
四 通知:
//一:发送通知
//字典
NSDictionary*dic=@{@"a":@"1",@"b":@"2",@"c":@"3"};
//发送通知
[[NSNotificationCenter defaultCenter]postNotificationName:@"通知" object:nil userInfo:dic];//二: 接收消息
//注册通知(等待接收消息)
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(value:) name:@"通知" object:nil];
-(void)value:(NSNotification*)sender{NSLog(@"%@",sender.userInfo);//注意关闭通知,否则下次监听还会收到这次的通知[[NSNotificationCenter defaultCenter]removeObserver:self];
}
转载于:https://my.oschina.net/jimolengsha/blog/699352
iOS 开发各种传值相关推荐
- IOS开发控制器之间传值的几种小方法
在IOS开发中或面试中,经常会遇到,两个或者多个控制器之间传值的问题 ,总结的集中方法仅供参考! 问题 :将B控制器中的textField 输入内容,传到A控制器中的label上显示出来,如何传值? ...
- 通知模式实现两个textField传值及模态视图——iOS开发
通知模式实现两个textField传值及模态视图--iOS开发 利用通知模式,实现两个不同界面的textField之间的传值,在界面二输入字符,传值到前一界面的textField. 界面的切换,这里临 ...
- iOS开发之通过代理逆向传值
在iOS开发中,传值是几乎每个App都会用到的,对于传统的顺向传值应该说是比较简单的,但是逆向传值往往会用到代理模式来实现,很多同学在这一块有迷惑,迷惑的不是怎么逆向传值,而是不理解代理模式,下面就来 ...
- iOS 代理反向传值
iOS 代理反向传值 在上篇博客 iOS代理协议 中,侧重解析了委托代理协议的概念等,本文将侧重于它们在开发中的应用. 假如我们有一个需求如下:界面A上面有一个button.一个label.从界面A跳 ...
- 浅谈iOS 开发中的界面通信
在任何的软件开发中都离不开界面与界面之间的通信,界面通信的最直接的方法就是界面传值. 在开发过程中我们在页面传值时我们通常使用的方法有:属性传值法,block传值法,代理传值法,以及单例传值法,通知传 ...
- iOS开发(5)动态监听键盘通知
众所周知,在ios开发的页面传值和监听代理两个环节中,通知Notification是一个重量级角色. 这里主要介绍一下一种特殊ios自带的通知,如 UIKeyboardWillChangeFrameN ...
- ios开发基础之通讯录系统实战-20
ios开发基础之通讯录系统实战 基础知识 OC 基础 segue 的使用.delegate 代理的使用 自定义代理.面向对象思想 沙盒容器的数据持久化方案, controller 之间的跳转 ,登录方 ...
- iOS开发-开发总结(四)
一:send和awk解释 sed -n p filenamesed ----------------------------是一个流编辑器(stream editor) awk 'BEGIN {pri ...
- ios开发问题汇总(一)
教程汇总 IOS比较好的网络教程:IOS编程浅蓝教程 IOS编程教程(五)自定义UITableView的表单元格 菜鸟教程-iOS教程 开发问题 实现页面切换,网上某些文章写的是: [self.nav ...
最新文章
- 边缘计算将吞掉云计算!
- 安装目录opencv for android 教程(环境搭建篇)
- mysql中的extract()函数
- 项目七samba服务器,Centos 7 配置Samba服务器
- python是不是汇编语言_python是汇编语言吗
- 服务器装哪个操作系统好,服务器装哪个操作系统好
- shell编程关于数组的那点事
- python进阶教程之异常处理
- “没有足够的可用内存来运行此程序”怎么解决
- HTML使川锚标签,第1章HTML的基本标签祥解.ppt
- 中科院30m二级分类土地利用数据Arcgis预处理及获取
- c语言程序设计黄迎久,C语言程序设计教程_黄迎久、庞润芳主编 赵军富、徐扬、胡晓燕、贾茹副主编_9787302418528_...
- Asp.Net构架(Http请求处理流程)
- Zepto中touch模块的使用(移动端)
- 计算两个数之差的绝对值
- python14-前端之CSS
- 计算机的硬盘维修,计算机硬盘的维修方法和技巧
- H5\uniapp图片添加水印
- Chrome开发者工具-阅读列表
- ad设置塞孔_超实用!PCB设计中过孔常用的6种处理方式