美文网首页
iOS使用block从后往前传值

iOS使用block从后往前传值

作者: 鱼遇雨欲語 | 来源:发表于2017-05-12 10:43 被阅读0次

    ①在后面控制器的 .h文件 中声明block

    //一会要传的值为NSString类型
    typedef void(^newBlock)(NSString*);
    
    @interface MineViewController : RSBaseCommonViewController
    
    //声明block属性
    @property (nonatomic, copy) newBlock block;
    
    //声明block方法
    - (void)text:(newBlock)block;
    
    @end
    
    

    ②在后面控制器的 .m文件 中设置block

    //设置block,设置要传的值
    - (void)text:(newBlock)block
    {
        self.block = block;
    }
    
    - (void)viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:YES];
        
        if(self.block != nil) {
            self.block(@"呵呵");
        }
    
    }
    

    ③在前面控制器的 .m文件 中接收传来的值

    #import "ViewController.h"
    #import "TwoViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        UIButton *button = [UIButton buttonWithType:(UIButtonTypeRoundedRect)];
        button.frame = CGRectMake(0, 100, 100, 100);
        button.backgroundColor= [UIColor redColor];
        [button addTarget:self action:@selector(push) forControlEvents:(UIControlEventTouchUpInside)];
        [self.view addSubview:button];
        
    }
    
    - (void)push
    {
        TwoViewController *newVC = [[TwoViewController alloc] init];
        
        //接收block传来的值
        newVC.block= ^(NSString*str){
            NSLog(@"%@", str);
        };
        
        [self.navigationController pushViewController:newVC animated:YES];
    }
    
    @end
    

    ④最终实现效果:在控制台打印出了"呵呵"

    相关文章

      网友评论

          本文标题:iOS使用block从后往前传值

          本文链接:https://www.haomeiwen.com/subject/tcjztxtx.html