iOS block传值

本文介绍了一种iOS应用中实现页面间值传递的方法。通过使用Block(闭包)技术,在FirstViewController点击按钮后推送到SecondViewController,并在返回时将值传回原页面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有两个页面,分别是:FirstViewController和SecondViewController,想到达到的效果是:从第一个页面push到第二个页面,然后在第二个页面pop的时候把值传回第一个页面。


大概代码如下,FirstViewController点击按钮:

- (void)btnClick
{
    SecondViewController *second = [[SecondViewController alloc] init];
    [second completeBlock:^(NSString *name) {
        NSLog(@"回调拿到的name = %@", name);
    }];
    
    [self.navigationController pushViewController:second animated:YES];
}

SecondViewController.h :


typedef void(^Block)(NSString *name); // 定义一个Block类型

@interface SecondViewController : UIViewController

@property (nonatomic, copy) Block block; // block属性

- (void)completeBlock:(Block)block; // block回调方法

@end

SecondViewController.m 点击按钮pop回第一个页面:


- (void)btnClick
{
    // 本页面的block存在则响应第一个页面的回调
    if (self.block) {
        self.block(@"Jerry Yao");
    }
    
    [self.navigationController popViewControllerAnimated:YES];
}

/**
 *  重写回调get方法
 *
 *  @param block 把第一个页面实例化的block传到本页面
 */
- (void)completeBlock:(Block)block
{
    _block = block;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值