日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ios 给网页传值_iOS学习——页面的传值方式

發布時間:2025/3/17 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ios 给网页传值_iOS学习——页面的传值方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2.4 通知傳值

方法描述:在通知接收方需要注冊通知,并指定接收到通知后進行的操作;而在通知發送方則在需要傳遞數據時發送通知就OK了。通知的操作都是通過NSNotificationCenter來完成的。

但是要注意的兩點是:

要想能夠接收到通知進行處理,必須先注冊通知。

在注冊通知的頁面消毀時一定要移除已經注冊的通知,否則會造成內存泄漏

注冊的接收通知的名稱必須和發送通知的名稱保持一致才能接收到,否則無法接收到發出的通知

適用場景:

一般用于已經通過push的方式進入到子頁面,在從子頁面返回主頁面的時候(子頁面會釋放掉內存),需要在主頁面中使用子頁面中的數據,這是就可以利用通知反向傳值。

但是也可以用于通過push進入子頁面時向子頁面傳遞數據,這時就可以用通知進行正向傳值。

傳遞方式:正向傳遞(很少這樣用)、反向傳遞(更常用)。

使用步驟:

反向傳遞:

在子頁面返回的時候發送通知,注冊的接收通知的名稱必須和發送通知的名稱保持一致才能接收到,否則無法接收到發出的通知

@interfaceKLSubViewController ()@end

@implementationKLSubViewController- (void)viewDidLoad {

[super viewDidLoad];

self.view.backgroundColor=[UIColor whiteColor];

self.title= @"子界面";//布局代碼省略

.......

}- (void) btnClicked:(UIButton *)btn {//發送通知回傳數據,回傳的數據格式自定義,這里定義為dictionary類型

[[NSNotificationCenter defaultCenter] postNotificationName:@"TransDataNoti" object:nil userInfo:@{@"content":@"子頁面回傳的數據"}];

[self.navigationController popViewControllerAnimated:YES];

}

在主頁面注冊通知,并制定接收到通知后執行的操作方法。需要注意的是,在注冊通知的頁面消毀時一定要移除已經注冊的通知,否則會造成內存泄漏。

@interfaceKLMainViewController ()

@property (strong, nonatomic) UITextField*textField;

@property (strong, nonatomic) UIButton*button;@end

@implementationKLMainViewController- (void)dealloc {//移除所有通知

[[NSNotificationCenter defaultCenter] removeObserver:self];//移除某個//[[NSNotificationCenter defaultCenter] removeObserver:self name:@"TransDataNoti" object:nil];

}- (void)viewDidLoad {

[super viewDidLoad];

self.title= @"主界面";//布局代碼省略

......//注冊通知,用于接收通知,接收通知的名稱必須和發送通知的名稱保持一致才能接收到,否則無法接收到發出的通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notiReceived:) name:@"TransDataNoti" object:nil];

}//接收通知,解析內容進行處理

- (void)notiReceived:(NSNotification *)sender {

self.textField.text= sender.userInfo[@"content"];

}- (void) btnClicked:(UIButton *)btn {

KLSubViewController*subVC =[[KLSubViewController alloc] init];

[self.navigationController pushViewController:subVC animated:YES];

}@end

正向傳遞:和反向傳遞的不走基本就是反過來就OK了,但是有一點需要注意的是正向傳遞時從主界面push到子界面時發送通知,這時候要確保子界面已經注冊了通知,否則會收不到通知的,所以正向傳遞時,子界面通知的注冊應該在子界面的初始化init方法中進行。

在主頁面返回的時候發送通知,注冊的接收通知的名稱必須和發送通知的名稱保持一致才能接收到,否則無法接收到發出的通知。

@interfaceKLMainViewController ()

@property (strong, nonatomic) UITextField*textField;

@property (strong, nonatomic) UIButton*button;@end

@implementationKLMainViewController- (void)viewDidLoad {

[super viewDidLoad];

self.title= @"主界面";//布局代碼省略

......

}- (void) btnClicked:(UIButton *)btn {

KLSubViewController*subVC =[[KLSubViewController alloc] init];//發送通知回傳數據,回傳的數據格式自定義,這里定義為dictionary類型

[[NSNotificationCenter defaultCenter] postNotificationName:@"TransDataNoti" object:nil userInfo:@{@"content":@"主頁面傳遞的數據"}];

[self.navigationController pushViewController:subVC animated:YES];

}@end

在子頁面注冊通知,并制定接收到通知后執行的操作方法。正向傳遞時注冊通知、基本布局不能放在viewDidLoad中,要放在初始化函數init中。

@interfaceKLSubViewController ()@end

@implementationKLSubViewController- (void)dealloc {//移除所有通知

[[NSNotificationCenter defaultCenter] removeObserver:self];//移除某個//[[NSNotificationCenter defaultCenter] removeObserver:self name:@"TransDataNoti" object:nil];

}-(instancetype)init {

self=[super init];//初始化代碼省略

......//注冊通知,用于接收通知,接收通知的名稱必須和發送通知的名稱保持一致才能接收到,否則無法接收到發出的通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notiReceived:) name:@"TransDataNoti" object:nil];returnself;

}- (void)viewDidLoad {

[super viewDidLoad];

self.view.backgroundColor=[UIColor whiteColor];

self.title= @"子界面";

}//接收通知,解析內容進行處理

- (void)notiReceived:(NSNotification *)sender {

self.textField.text= sender.userInfo[@"content"];

}- (void) btnClicked:(UIButton *)btn {

[self.navigationController popViewControllerAnimated:YES];

}@end

2.5 NSUserDefaults傳值

方法描述:NSUserDefaults傳值是將所要傳的值寫在沙盒目錄里面,需要獲取值的時候直接訪問沙盒,獲取這個值就可以了,這種傳值方法一般用在需要將數據本地存儲的時候,比如:用戶名之類,當用戶下次登錄或者使用app的時候,可以直接從本地讀取。

適用場景:任何需要數據傳遞的場景都適用,但是傳遞數據的類型僅限于基本數據類型,不能用于自定義的對象類型。

傳遞方式:正向傳值、反向傳值。

使用步驟:

需要傳值時將數據通過NSUserDefaults保存到沙盒目錄里面

- (void) btnClicked:(UIButton *)btn {/*setObject:后面寫的就是所需要傳遞的值

forKey:要具有唯一性、一致性;

唯一性是指:當代碼中用到多個NSUserDefaults方法時,要保證不同的key不一樣,否則就是覆蓋值

一致性:這里傳遞一個值,當需要用到的時候,要用valueForkey的方法,這個key和傳值時候寫的key要一樣,寫錯了就找不到值了。*/[[NSUserDefaults standardUserDefaults] setObject:@"NSUserDefaults傳值" forKey:@"NSUserDefaults"];

[[NSUserDefaults standardUserDefaults] synchronize];

[self.navigationController popViewControllerAnimated:YES];

}

需要使用值時通過NSUserDefaults從沙盒目錄里面取值進行處理

_label.text = [[NSUserDefaults standardUserDefaults] valueForKey:@"NSUserDefaults"];

2.6 單例傳值

方法描述:單例傳值的性質和NSUserDefaults傳值的性質類似,只是單例傳值是將數據保存在單例對象中,需要的時候同樣從單例對象中去獲取數據使用就ok。

適用場景:任何需要數據傳遞的場景都適用,傳遞的數據可以是任何類型的數據。

傳遞方式:正向傳值、反向傳值均OK。

使用步驟:

創建一個類,擁有一些屬性用于保存數據,并實現單例方法

@interfaceKLDanliObj : NSObject

@property (nonatomic, copy) NSString*content; //保存數據數據的屬性

+ (instancetype) shardDanLiObj; //單例對象獲取方法

@end

#import "KLDanliObj.h"

static DanLi *danli =nil;@implementationKLDanliObj+(instancetype) shardDanLiObj {//實現方法,判斷是否為空,是就創建一個全局實例給它

if (danli ==nil) {

danli=[[KLDanliObj alloc] init];

}returndanli;

}@end

需要傳遞數據時使用單例類將數據保存到單例的屬性中

[KLDanliObj shardDanLiObj].content = @"主界面傳遞的數據";

需要使用值時通過單例的屬性獲取數據進行使用和處理

self.textField.text = [KLDanliObj shardDanLiObj].content;

2.7 KVC傳值

方法描述:KVC(Key-value coding)鍵值編碼,單看這個名字可能不太好理解。其實翻譯一下就很簡單了,就是指iOS的開發中,可以允許開發者通過Key名直接訪問對象的屬性,或者給對象的屬性賦值,而不需要調用明確的存取方法,這樣就可以在運行時動態地訪問和修改對象的屬性。這其實和屬性傳值比較類似。

適用場景:當從主頁面push到子頁面時,子頁面需要使用到主頁面的數據,我們需要使用到正向傳值。

傳遞方式:正向傳值

使用步驟:

在需要傳值時使用KVC給子頁面的屬性進行賦值就ok了

- (void) btnClicked:(UIButton *)btn {

KLSubViewController*subVC =[[KLSubViewController alloc] init];//給子頁面subVC的屬性content賦值 和subVC.content = @"主頁面傳遞的數據";效果一樣

[subVC setValue:@"主頁面傳遞的數據" forKey:@"content"];

[self.navigationController pushViewController:subVC animated:YES];

}

總結

以上是生活随笔為你收集整理的ios 给网页传值_iOS学习——页面的传值方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产乱码精品一区二区三区忘忧草 | 成人h动漫精品一区二区下载 | 69式视频 | 天天综合天天添夜夜添狠狠添 | 欧美激情视频在线播放 | 久久久久中文字幕 | 免费麻豆 | 成人性生交大片免费看r链接 | 日在线视频| 国产尤物视频在线观看 | 哺乳期喷奶水丰满少妇 | 999精品免费视频 | 日韩av在线一区 | 欧美日韩成人一区二区在线观看 | 国产精品嫩| 亚洲av永久无码精品三区在线 | 一区二区三区日韩 | 日韩视频在线观看免费 | av一级二级 | 亚洲在线观看免费视频 | 激情五月婷婷 | 秋霞av在线| 国产成人精品一区二区色戒 | 性生生活大片又黄又 | 乌克兰性极品xxxhd | 国模二区 | 欧美成人乱码一区二区三区 | 欧美一区二区三区在线视频 | 成人永久免费 | 91国产丝袜播放在线 | a级黄色网址 | 神马久久午夜 | 欧美顶级metart裸体全部自慰 | 黄色自拍网站 | 亚洲国产精品激情在线观看 | 欧美理论视频 | 久久久久国产精品人妻 | 狠狠操天天干 | 亚洲综合av一区二区三区 | 久久一级大片 | 中文字幕第80页 | 老女人一区 | 亚洲AV无码久久精品浪潮 | 亚洲成人av一区 | av一级免费 | 日本免费网 | 亚洲视频精品在线 | 精品少妇人妻av免费久久洗澡 | 亚洲色在线视频 | 波多野结衣亚洲天堂 | 久热国产视频 | 性生活在线视频 | 在线观看免费成人 | 欧美色图校园春色 | 黄色成人在线 | 艳妇臀荡乳欲伦交换在线播放 | 男生舔女生的屁股 | 久久国产精品免费视频 | 欧美成人精品欧美一级 | 大奶骚| 蜜桃av中文字幕 | 999久久久久 | 亚洲不卡在线播放 | 国产毛片一区二区三区 | 无码少妇一级AV片在线观看 | 啪视频免费 | 午夜伦理在线观看 | 欧美日韩在线视频免费播放 | 91亚洲一区 | 午夜生活片 | 日干夜操 | 国产成人主播 | 一本色道无码道dvd在线观看 | www亚洲色图| 国内自拍亚洲 | 免费不卡毛片 | 亚洲第一大网站 | 毛片免费在线观看视频 | 欧美中文字幕一区二区三区 | 日韩精品国产一区二区 | 深夜成人在线 | 国产一区亚洲二区三区 | 亚洲视频一二区 | 韩国妻子的朋友 | 少妇姐姐| 成人在线亚洲 | 啪啪网站视频 | 亚洲永久精品在线观看 | 日韩电影在线观看一区 | 中文永久免费观看 | 免费看成人片 | 老司机福利精品 | 久久精品国产亚洲av麻豆色欲 | 久久网伊人| 色老汉av一区二区三区 | 一区二区片 | 成人午夜精品福利 | 成人极品 | 好屌妞视频这里只有精品 |