UI_通知中心_傳值的一種方法
來源:程序員人生 發(fā)布時間:2014-11-11 08:28:19 閱讀次數(shù):3513次
NSNotification
通知中心傳值,可以逾越多個頁面?zhèn)?#20540;, 1般也是從后面的頁面?zhèn)鹘o前面的頁面。
思路:
第3個界面的值傳給第1個界面。
1. 在第1個界面建立1個通知中心, 通過通知中心,注冊1個監(jiān)聽事件
2. 在第1個界面中,設(shè)置接收到通知的事件。
3. 在第1個界面中的dealloc中, 將通知中心remove掉
4. 在第3個界面中, 建立1個通知中心, 通過通知中心, 發(fā)送通知(發(fā)送通知的進程就是傳值的進程,將要傳輸?shù)?#20540;作為object的值傳給第1個界面
代碼片斷:
第1界面:
//通知中心是個單例
NSNotificationCenter *notiCenter = [NSNotificationCenter defaultCenter];
// 注冊1個監(jiān)聽事件。第3個參數(shù)的事件名, 系統(tǒng)用這個參數(shù)來區(qū)分不同事件。
[notiCenter addObserver:self selector:@selector(receiveNotification:) name:@"cesuo" object:nil];
// @selector(receiveNotification:)方法, 即遭到通知以后的事件
- (void)receiveNotification:(NSNotification *)noti
{
// NSNotification 有3個屬性,name, object, userInfo,其中最關(guān)鍵的object就是從第3個界面?zhèn)鱽淼臄?shù)據(jù)。name就是通知事件的名字, userInfo1般是事件的信息。
NSLog(@"%@ === %@ === %@",
noti.object, noti.userInfo, noti.name);
// 第1界面中dealloc中移除監(jiān)聽的事件
- (void)dealloc
{
// 移除當(dāng)前對象監(jiān)聽的事件
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
第2界面:
// 創(chuàng)建1個通知中心
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
// 發(fā)送通知. 其中的Name填寫第1界面的Name, 系統(tǒng)知道是第1界面來相應(yīng)通知, object就是要傳的值。 UserInfo是1個字典, 如果要用的話,提早定義1個字典, 可以通過這個來實現(xiàn)多個參數(shù)的傳值使用。
[center postNotificationName:@"cesuo" object:@"zhangheng" userInfo:dic];
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈