block

首先,創(chuàng)建兩個視圖控制器,在第一個視圖控制器中創(chuàng)建一個UILabel和一個UIButton,其中UILabel是為了顯示第二個視圖控制器傳過來的字符串,UIButton是為了push到第二個界面。

第二個界面的只有一個UITextField,是為了輸入文字,當輸入文字,并且返回第一個界面的時候,當?shù)诙€視圖將要消失的時候,就將第二個界面上TextFiled中的文字傳給第一個界面,并且顯示在UILabel上。

typedef void (^ReturnTextBlock)(NSString *showText);

@interface TextFieldViewController : UIViewController

@property (nonatomic, copy) ReturnTextBlock returnTextBlock;

- (void)returnText:(ReturnTextBlock)block;

@end

第一行代碼是為要聲明的Block重新定義了一個名字

ReturnTextBlock

這樣,下面在使用的時候就會很方便。

第三行是定義的一個Block屬性

第四行是一個在第一個界面?zhèn)鬟M來一個Block語句塊的函數(shù),不用也可以,不過加上會減少代碼的書寫量

- (void)returnText:(ReturnTextBlock)block {

self.returnTextBlock = block;

}

- (void)viewWillDisappear:(BOOL)animated {

if (self.returnTextBlock != nil) {

self.returnTextBlock(self.inputTF.text);

}

}

其中inputTF是視圖中的UITextField。

第一個方法就是定義的那個方法,把傳進來的Block語句塊保存到本類的實例變量returnTextBlock(.h中定義的屬性)中,然后尋找一個時機調(diào)用,而這個時機就是上面說到的,當視圖將要消失的時候,需要重寫:

- (void)viewWillDisappear:(BOOL)animated;

在第一個控制器中獲得第二個控制器

TextFieldViewController *tfVC = segue.destinationViewController;

[tfVC returnText:^(NSString *showText) {

self.showLabel.text = showText;

}];

這時候上面(第一步中)定義的那個方法起作用了,如果你寫一個[tfVC return Text按回車? ,系統(tǒng)會自動提示出來一個:

tfVC returnText:<#^(NSString *showText)block#>

的東西,我們只要在焦點上回車,就可以快速創(chuàng)建一個代碼塊了,大家可以試試。這在寫代碼的時候是非常方便的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容