最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS通過block在兩個(gè)頁面間傳值的方法

 更新時(shí)間:2016年11月22日 08:50:23   投稿:daisy  
不知道大家有沒有發(fā)現(xiàn),在實(shí)際開發(fā)中使用block的地方特別多,block比delegate和notification有著更簡潔的優(yōu)勢,下面這篇文章我們來簡單了解一下block在兩個(gè)頁面之間的傳值。有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。

一、功能需求

在第一個(gè)頁面中有一個(gè)button和一個(gè)label,label上默認(rèn)顯示“哈哈”,點(diǎn)擊button進(jìn)入第二個(gè)頁面。在第二個(gè)頁面有一個(gè)UITextField和一個(gè)button2,點(diǎn)擊button2回到第一個(gè)頁面,但同時(shí)第一個(gè)頁面的label上顯示的文字修改為剛剛在UITextField寫進(jìn)去的文字。

二、先定義block

在要傳值得那個(gè)頁面定義含有block參數(shù)的方法,即在第二個(gè)頁面的.h文件中定義:

重新定義:typedef void (^ReturnTextBlock)(NSString *showText);

//重新定義block類名 void返回值類型 ReturnTextBlock類名(重命名類名) NSString *showText參數(shù)

聲明一個(gè)block變量:@property (nonatomic, copy) ReturnTextBlock returnTextBlock;

//注:此處聲明需要用copy屬性,因?yàn)閎lock一開始是放在棧上的,只有copy后才會(huì)放到堆上。

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在兩個(gè)頁面間進(jìn)行傳值

在第一個(gè)頁面,點(diǎn)擊button按鈕實(shí)現(xiàn)跳轉(zhuǎn)到第二個(gè)頁面并調(diào)用第二個(gè)頁面的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];

}

在第二個(gè)頁面.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)文章

最新評論

许昌县| 霞浦县| 海伦市| 乌审旗| 东丰县| 宁蒗| 恩平市| 湘潭市| 阿拉尔市| 朝阳市| 津市市| 玉溪市| 府谷县| 新沂市| 兴安盟| 辉南县| 忻州市| 巴林左旗| 金华市| 沛县| 泗阳县| 沙洋县| 南丰县| 修武县| 大同县| 东乌珠穆沁旗| 阿鲁科尔沁旗| 福建省| 临西县| 田林县| 鄢陵县| 香港| 库车县| 夏河县| 沂南县| 宜丰县| 高雄县| 诏安县| 通渭县| 黑山县| 金华市|