iOS 設計模式-Block實現代理的邏輯

來源:互聯網
上載者:User

標籤:

在A頁面,點擊跳轉到B頁面,B頁面操作完,回到A頁面,並重新整理A頁面的內容。典型的例子,就是在一個列表裡,點擊新增,跳到新增頁面,新增完,把資料傳回給列表頁,並重新整理列表頁裡的內容。

這個,我平時一般是通過代理來實現,下面試著通過Block來實現。

在B頁面定義Block,供A頁面調用。

/** *  確認訂單選擇返回block */@property (nonatomic, strong) void (^ selectedAddressBlock)(HGAddressModel * address);

B頁面,操作完成,給Block傳回調值

/** *  選中行,為了確認訂單時,選擇收貨地址使用 */- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{    HGAddressModel *entity = self.dataSource[indexPath.row];    if (self.selectedAddressBlock) {        self.selectedAddressBlock(entity);    }    [self.navigationController popViewControllerAnimated:YES];}

A頁面操作就很簡單了,跳轉到B頁面,直接調用B頁面的Block 就可以拿到結果了。

- (void)jumpAddress:(UIButton *)sender {    AddressListViewController *address = [[AddressListViewController alloc] init];    address.hidesBottomBarWhenPushed = YES;    address.title = @"地址管理";    address.selectedAddressBlock = ^(HGAddressModel *model){        DR_NSLog(@"----------model------------%@",model.province_name);    };    [self.navigationController pushViewController:address animated:YES];}

OK,完成。

 

iOS 設計模式-Block實現代理的邏輯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.