Block相關(guān)(二)

前言,在上篇文章Block相關(guān)(一),中介紹了Block相關(guān)的基礎(chǔ)知識(shí),包括Block介紹、基礎(chǔ)語(yǔ)法、使用情況等。這篇我們將介紹Blcok的實(shí)戰(zhàn)使用環(huán)境,畢竟語(yǔ)言是抽象的,代碼應(yīng)用才是具體的。

頁(yè)面值傳遞

我們知道在父子控制器傳遞值的時(shí)候,為了解耦和合理的進(jìn)行值傳遞,我們一般會(huì)用代理或者Block。Block的靈活性在值傳遞的時(shí)候能很好的體現(xiàn)。這里我們用一個(gè)簡(jiǎn)單的通訊錄添加聯(lián)系人功能作為演示,效果如下:


反向傳值.gif

功能主要實(shí)現(xiàn)了,在添加聯(lián)系人頁(yè)面添加一個(gè)聯(lián)系人,然后保存,并在通訊錄首頁(yè)展示,實(shí)現(xiàn)代碼如下:

在新建聯(lián)系人頁(yè)面聲明一個(gè)block成員變量:(Person為聯(lián)系人模型)

/* 保存聯(lián)系人的block */
@property (nonatomic, strong) void (^saveBlock)(Person *);

在通訊錄首頁(yè)跳轉(zhuǎn)到新建聯(lián)系人頁(yè)面時(shí)給block賦值:

        NewViewController *newVC = segue.destinationViewController;// 新建聯(lián)系人控制器
        
        __weak typeof(self) weakSelf = self;
        
        /* 給block賦值 */
        newVC.saveBlock = ^(Person *person) {
            [weakSelf.personArr addObject:person];
            [weakSelf.tableView reloadData];
        };

在保存聯(lián)系人時(shí)執(zhí)行block:

// 點(diǎn)擊保存按鈕執(zhí)行操作
- (IBAction)save:(UIButton *)sender {
    
    Person *person = [[Person alloc] init];
    person.name = self.personNamelabel.text;
    person.phoneNumber = self.personNumberlabel.text;
    
    !self.saveBlock ? : self.saveBlock(person);// 執(zhí)行block
    
    // 返回通訊錄首頁(yè)
    [self.navigationController popViewControllerAnimated:YES];
}

這樣一來就實(shí)現(xiàn)了,子頁(yè)面向父頁(yè)面逆向傳值。原理有點(diǎn)像代理。父頁(yè)面將拿到數(shù)據(jù)后要執(zhí)行的操作封裝到block中,由于ARC環(huán)境下,Block會(huì)復(fù)制到堆上,block對(duì)通訊錄頁(yè)面有強(qiáng)引用關(guān)系,所以新建頁(yè)面執(zhí)行block時(shí)候,block里面代碼就可以拿到通訊錄頁(yè)面更新數(shù)據(jù)。

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

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,219評(píng)論 25 708
  • 愛是什么, 喜歡是什么, 我都無一知曉。 于深夜里, 一燈燭火點(diǎn)亮屋的光。 于星宿里, 幾顆眨眼精靈的朗。 于我心...
    七月上的冥王星閱讀 271評(píng)論 2 2
  • 〔得到紅包DAY38〕 做正確的事:尊重人才(知識(shí)分子),尊重市場(chǎng)(普通人) 全力以赴地做事:更專業(yè)做事,而不是靠...
    江尺瀾依閱讀 416評(píng)論 0 0
  • 《冬 至》 冬至寒池水結(jié)凝, 蘆荻枝枯不禁風(fēng), 蕭蕭殘荷默無語(yǔ), 芳華只待夏嫣紅 。
    雁飛沙閱讀 239評(píng)論 0 2
  • 進(jìn)入五月,世界風(fēng)云際會(huì),東方有一個(gè)女人陷落了,西方有一個(gè)男人崛起了。 陷落的這個(gè)女人叫瓊瑤,對(duì),就是那位寫了一輩子...
    盛夏涼情食色館閱讀 517評(píng)論 0 1

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