iOS 开发各种传值
2016-06-22 00:00
381 查看
摘要: iOS开发 界面传值
一. 属性传值(正向):
二. Block传值(反向)
二. 代理传值(正向传值为例):
三 单例传值:
单例传值可以理解为定义一个全局变量进行传值
四 通知:
一. 属性传值(正向):
[code=language-objectivec]1. 在第二个界面声明属性 @property(nonatomic,strong)NSString*str; 2. 在第一个界面执行跳转时赋值 second.str=@"属性传值"; 3. 取值 nslog(@"%@",str);
二. Block传值(反向)
[code=language-objectivec]//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); };
二. 代理传值(正向传值为例):
[code=language-objectivec]/*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); }
三 单例传值:
单例传值可以理解为定义一个全局变量进行传值
[code=language-objectivec]//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);
四 通知:
[code=language-objectivec]//一:发送通知 //字典 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]; }
相关文章推荐
- iOS疯狂讲解之单例模式传值的简单介绍
- iOS - 单例传值 (一)
- iOS - 单例传值 /使用使用SharedApplication.进行传值(二)
- iOS 传值总结
- IOS 页面间传值(属性传值、block传值、代理传值、单例传值、NSNotificaion传值)
- ios控制器之间传值-单例传值
- 谈谈ios传值方式(属性传值、代理传值、Block传值、单例传值、通知传值、KVC传值)
- IOS 界面传值实现的6种方式(一)
- textView限制字数(超简单,不走弯路)(解决联想输入及iOS7崩溃等问题)
- IOS SingleView
- iOS之设置用户头像的圆角
- iOS之iPhone解锁界面的"滑动来解锁"闪烁动画效果,好奇的赶紧进来取走,别看了,说的就是你0.0
- openCV 2.4.13 iOS background_segm.hpp 'list' file not found
- vmstat 与 iostat使用
- iOS开发之使用XMPPFramework实现即时通信
- iOS dealloc 不执行或延迟执行的问题
- iOS:实现图片的无限轮播---之使用第三方库SDCycleScrollView
- 正则表达式总结
- ios 优化概念
- 【转】自定义iOS的Back按钮(backBarButtonItem)和pop交互手势(interactivepopgesturerecognizer) --- 不错