Block回調傳值

實現回調傳值的方式有哪些?

1.block
2.delegate
3.NSNotificationCenter

1.block

先聲明一個block (在哪里聲明?)
需要將哪里的內容傳出去就在那里聲明一個block
回調的值放在哪里需要在接口部分 拖拽過來(需要注意拖拽到什么地方?存放回調的值的當前類的接口文件里面 )
比如:label是存放回調值的,則拖拽(按control + label控件 拖到ViewController.h 文件接口內 ,并命名)
textView是存放用戶輸入的需要做回調的空間,以相同的方式拖拽到PushViewController接口內 (當前控件所在的類頭文件內)

需要傳值的視圖代碼
PushViewController.h
typedef void (^Block) (NSString*);
@interface  PushViewController :UIViewController
@prooerty (nonatomic)Block PassValueBlock ;
如果省略這個默認為strong
PushViewControlle.m代碼
#import "PushViewController.h"
@interface PushViewController ()
@property (weak, nonatomic) IBOutlet UITextView *textView;
@end
??注意:這個是一個分類,可以隱藏接口實現傳值的過程:視圖消失的時候將輸入的內容作為Block(PassValueBblock)的參數即可
-(void)ViewWillDisappear:animated{
[superviewWillDisappear:animated];
_PassValueBlock(_textView.text);
    }```

#####ViewController.m代碼

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UILabel *textlLabel;
@end
//:可以隱藏接口

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

PushViewController *pushViewController  =  segue.destinationViewController;

pushViewController.passValueBlock = ^(NSString *text) {

    _textlLabel.text = text;

};

//passValueBlock的生命周期在這個方法內

NSLog(@"%@",pushViewController.passValueBlock);

}
//:ViewController.m內

塊內進行傳值 ,將輸入的數值賦值給回調標簽textLbl.text

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,229評論 4 61
  • iOS開發中,頁面傳值是很常見的,但是頁面傳值你究竟知道多少呢?筆者這篇文章就是給大家介紹一下頁面傳值的具體方式,...
    蒲公英少年閱讀 2,181評論 10 44
  • 匆匆來匆匆走,行程總是走路上,不知道多少寒來暑往,多少日月星辰。始終沒有停下的時候,不知道什么時候是盡頭。 人活一...
    念影子閱讀 606評論 0 0
  • 6.3日答辯初期,和大多數同學一樣,我是緊張的。感覺自己對論文不是很熟悉,擔心老師問的問題答不上來。但在和朋友電話...
    簡單的詩句閱讀 271評論 0 0