iOS 开发各种传值
生活随笔
收集整理的這篇文章主要介紹了
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 开发各种传值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Unix时间戳 POSIX时间 Un
- 下一篇: 短序列组装Sequence Assemb