iOSがblockで2ページ間で値を伝える方法

2155 ワード

一、機能需要
最初のページにbuttonとlabelがあり、labelにはデフォルトで「はは」が表示され、buttonをクリックして2番目のページに入ります.2ページ目にUItextFieldとbutton 2があり、button 2をクリックして1ページ目に戻りますが、同時に1ページ目のlabelに表示される文字はUItextFieldに書いたばかりの文字に変更されます.
二、blockを定義する
そのページにblockパラメータを含む方法、すなわち2番目のページを定義する.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ボタンをクリックして2番目のページにジャンプし、2番目のページの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];

}

2ページ目です.mファイルでbutton 2ボタンを実装する方法

-(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はコードを実行する「場所」を実現する実行コードにジャンプする.送信完了
まとめ
以上はこの文章のすべての内容で、本文の内容がみんなの学习あるいは仕事に対して一定の助けをもたらすことができることを望んで、もし疑问があればみんなは伝言を残して交流することができます.