iOS通過block在兩個頁面間傳值的方法
一、功能需求
在第一個頁面中有一個button和一個label,label上默認(rèn)顯示“哈哈”,點(diǎn)擊button進(jìn)入第二個頁面。在第二個頁面有一個UITextField和一個button2,點(diǎn)擊button2回到第一個頁面,但同時第一個頁面的label上顯示的文字修改為剛剛在UITextField寫進(jìn)去的文字。
二、先定義block
在要傳值得那個頁面定義含有block參數(shù)的方法,即在第二個頁面的.h文件中定義:
重新定義:typedef void (^ReturnTextBlock)(NSString *showText);
//重新定義block類名 void返回值類型 ReturnTextBlock類名(重命名類名) NSString *showText參數(shù)
聲明一個block變量:@property (nonatomic, copy) ReturnTextBlock returnTextBlock;
//注:此處聲明需要用copy屬性,因?yàn)閎lock一開始是放在棧上的,只有copy后才會放到堆上。
block的調(diào)用方法:- (void)returnText:(ReturnTextBlock)block;
在.m文件中實(shí)現(xiàn)
block的調(diào)用方法實(shí)現(xiàn)代碼:- (void)returnText:(ReturnTextBlock)block {
self.returnTextBlock = block;
}
至此,block準(zhǔn)備工作已完成。
三、通過block在兩個頁面間進(jìn)行傳值
在第一個頁面,點(diǎn)擊button按鈕實(shí)現(xiàn)跳轉(zhuǎn)到第二個頁面并調(diào)用第二個頁面的block方法。
-(void)FirstBtnPressed
{
//用blockSelf修飾blockSelf.label 避免block塊內(nèi)部_label被循環(huán)引用
__weak ViewController *blockSelf = self;
ShowViewController *orderVC=[[ShowViewController alloc]init];
//block返回值(跟代理寫法挺類似的,就是語法不同,代理的話是此處是self.delegate=self;)
[orderVC returnText:^(NSString *showText) {
blockSelf.label.text=showText;
}];
[ self presentViewController:orderVC animated: YES completion:nil];
}
在第二個頁面.m文件中實(shí)現(xiàn)button2按鈕的方法
-(void)SecondBtnPressed
{
//只要在變量前面增加__block,在block里面就可以修改該變量的值。當(dāng)然也有其他方法如添加static等。
[self dismissViewControllerAnimated:YES completion:^{
//在使用block前需要對block指針做判空處理。
//不判空直接使用,一旦指針為空直接產(chǎn)生崩潰。
if (self.returnTextBlock != nil) {
self.returnTextBlock(self.text.text);
NSLog(@"text==%@",self.text.text);
}
}];
}
這樣,就可以實(shí)現(xiàn)我們想要實(shí)現(xiàn)的功能了,很簡單吧。
小結(jié)
誰要傳值誰就定義含有block的參數(shù)的方法,在方法內(nèi)部調(diào)用blcok,將要傳遞的參數(shù)給了blcok,blcok跳進(jìn)實(shí)現(xiàn)它要執(zhí)行代碼的'地方'執(zhí)行代碼.傳值完成
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
iOS中自帶超強(qiáng)中文分詞器的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于iOS中自帶超強(qiáng)中文分詞器的實(shí)現(xiàn)方法,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-06-06
iOS手勢識別的詳細(xì)使用方法(拖動,縮放,旋轉(zhuǎn),點(diǎn)擊,手勢依賴,自定義手勢)
這篇文章主要介紹了iOS手勢識別的詳細(xì)使用方法(拖動,縮放,旋轉(zhuǎn),點(diǎn)擊,手勢依賴,自定義手勢),具有一定的參考價值,有需要的可以參考一下。2016-11-11
ios中g(shù)etTime()的兼容性實(shí)例代碼
在本篇文章里小編給大家整理的是關(guān)于ios中g(shù)etTime()的兼容性實(shí)例代碼,需要的朋友們可以學(xué)習(xí)下。2020-03-03

