iOS中傳值方法block

使用block在兩個(gè)界面之間進(jìn)行值傳遞

思路:

先創(chuàng)建兩個(gè)視圖控制器與對(duì)應(yīng)的類關(guān)聯(lián)分別為ViewController 和NextViewcontroller。

在第一個(gè)視圖中添加一個(gè)UILabel和一個(gè)UIButton控件:UILabel顯示從第二個(gè)界面中傳回來的值,UIButton設(shè)置跳轉(zhuǎn)到第二個(gè)界面。

第二個(gè)視圖中添加一個(gè)UITextField控件,輸入文字,當(dāng)從第二個(gè)界面返回到第一個(gè)界面時(shí),即當(dāng)?shù)诙€(gè)界面要消失的時(shí)候,將UITextField中所輸入的文字傳遞到第一個(gè)界面,并且顯示在第一個(gè)界面的label上。

步驟:

1.在storyboard中添加兩個(gè)視圖控制器與類關(guān)聯(lián),其他控件大概如下

2.代碼如下

NextViewController.h


@property (nonatomic, copy) void(^myBlock)(NSString *backValue);


NextViewController.m ?為button添加一個(gè)方法


- (IBAction)back:(id)sender {

//將textField中輸入的內(nèi)容保存到block中

if (self.myBlock) {

self.myBlock(self.textField.text);

}

//關(guān)閉第二個(gè)視圖

[self dismissViewControllerAnimated:YES completion:nil];

}


ViewController.m?導(dǎo)入NextViewController類 并實(shí)現(xiàn)以下方法


//視圖控制器將要跳轉(zhuǎn)時(shí)調(diào)用

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

NextViewController *nvc = [[NextViewController alloc]init];

//獲取所要跳轉(zhuǎn)到的視圖控制器,將創(chuàng)建的nvc作為目標(biāo)控制器

nvc = segue.destinationViewController;

//獲取傳過來的參數(shù) 并傳給label顯示在界面上

nvc.myBlock = ^(NSString *backValue) {

self.label.text = backValue;

};

}

3.效果如下



另外在block中的參數(shù)可以設(shè)置多個(gè)用逗號(hào)隔開


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 翻譯自“View Controller Programming Guide for iOS”。 1 彈出視圖控制器...
    lakerszhy閱讀 3,635評(píng)論 2 20
  • 思路: 將要傳遞的值告訴通知中心NSNotificationCenter,然后利用通知中心實(shí)現(xiàn)從一個(gè)界面到另一個(gè)界...
    H小凡閱讀 310評(píng)論 0 0
  • *7月8日上午 N:Block :跟一個(gè)函數(shù)塊差不多,會(huì)對(duì)里面所有的內(nèi)容的引用計(jì)數(shù)+1,想要解決就用__block...
    炙冰閱讀 2,553評(píng)論 1 14
  • 1.自定義控件 a.繼承某個(gè)控件 b.重寫initWithFrame方法可以設(shè)置一些它的屬性 c.在layouts...
    圍繞的城閱讀 3,484評(píng)論 2 4
  • 其實(shí),我不想寫詩 想去旅游,想去濟(jì)州島想去一個(gè)人的夢里和他纏綿,交集 想去一望無際的大海看浪花,一朵朵涌過來又推到...
    紅精靈閱讀 161評(píng)論 1 2