iOS通過block在兩個頁面間傳值的方法_IOS

來源:互聯網
上載者:User

一、功能需求

在第一個頁面中有一個button和一個label,label上預設顯示“哈哈”,點擊button進入第二個頁面。在第二個頁面有一個UITextField和一個button2,點擊button2回到第一個頁面,但同時第一個頁面的label上顯示的文字修改為剛剛在UITextField寫進去的文字。

二、先定義block

在要傳值得那個頁面定義含有block參數的方法,即在第二個頁面的.h檔案中定義:

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

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

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

//註:此處聲明需要用copy屬性,因為block一開始是放在棧上的,只有copy後才會放到堆上。

block的調用方法:- (void)returnText:(ReturnTextBlock)block;

在.m檔案中實現

block的調用方法實現代碼:- (void)returnText:(ReturnTextBlock)block {self.returnTextBlock = block;}

至此,block準備工作已完成。

三、通過block在兩個頁面間進行傳值

在第一個頁面,點擊button按鈕實現跳轉到第二個頁面並調用第二個頁面的block方法。

-(void)FirstBtnPressed{//用blockSelf修飾blockSelf.label 避免block塊內部_label被循環參考__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檔案中實現button2按鈕的方法

-(void)SecondBtnPressed{//只要在變數前面增加__block,在block裡面就可以修改該變數的值。當然也有其他方法如添加static等。[self dismissViewControllerAnimated:YES completion:^{//在使用block前需要對block指標做判空處理。//不判空直接使用,一旦指標為空白直接產生崩潰。if (self.returnTextBlock != nil) {self.returnTextBlock(self.text.text);NSLog(@"text==%@",self.text.text);}}];}

這樣,就可以實現我們想要實現的功能了,很簡單吧。

小結

誰要傳值誰就定義含有block的參數的方法,在方法內部調用blcok,將要傳遞的參數給了blcok,blcok跳進實現它要執行代碼的'地方'執行代碼.傳值完成

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的協助,如果有疑問大家可以留言交流。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.