iOS-使用performSelector:withObject:执行页面回调

在开发过程中,经常遇到如下情况:
A push B
B 执行某些事件后,需要回调或通知A 执行具体事件。
这种情况下大多会使用Block回调来实现。
本文讲述使用performSelector:withObject:来实现回调。

直接代码:

接收回调页面代码

//接收回调页面
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    //STValueBackViewController 是目标页面
    
    STValueBackViewController *callBackVC = [[STValueBackViewController alloc] init];
    //这里需要注意:如果回调携带参数,要追加冒号。
    //sel 是方法名
    //self 是接受回调的实例
    //callBackParam是目标页面需要的参数
    callBackVC.callBackParam = @{
                                 @"sel" : @"nslogCallBackMessage:",
                                 @"instance" : self,
                                 };
    [self.navigationController pushViewController:callBackVC animated:YES];
}
/**
 接收回调处理

 @param param 参数
 */
- (void)nslogCallBackMessage:(NSString *)param
{
    NSLog(@"执行了回调~ 内容是%@",param);
}

目标页面代码

- (IBAction)callBackEvent:(id)sender
{
    if (self.callBackParam) {
        //取出方法名
        NSString *sel = [self.callBackParam objectForKey:@"sel"];
        //取出接收回调实例变量
        Class instance = [self.callBackParam objectForKey:@"instance"];
        if (sel && instance) {
            //将方法名转换成方法
            SEL seletor = NSSelectorFromString(sel);
            //检查接收回调的实例变量是否有该方法
            if ([instance respondsToSelector:seletor]) {
                //执行方法
                [instance performSelector:seletor withObject:@"回调参数"];
            }
        }
  
    }
}

执行结果:
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值