iOS 开发中 代理传值

2017-07-24  本文已影响0人  SuChAChAoS

A 向 B 传值:

A要传值,就要告诉别人我可以传值。

A 要声明这个协议,定义遵守该协议的delegate属性。

A本身并不关心数据传给谁了,谁实现了协议的方法就把数据传给谁。

A用protocol告诉别人我可以把数据传出去后,先判断[_delegate respondsToSelector]是否为真,若为真,则调用协议里的方法------->传值

B要接受值,就要遵守这个协议,实现协议里规定的方法,将self赋值给A的delegate,实现协议的方法的同时------------------------->收值

-------------------------------------------------------------------------------------

嗯,当然也可以用block来实现

A 向 B 传值:

A要传值,同样也要在A中声明这个block,并且调用这个block,将值作为参数传出去。

B要收值,就要实现这个block,并且值已经作为参数传进来可以直接使用。

但是会出现循环强应用的情况,下边是解决办法:

- (void)btnClicked:(id)sender

{

    [self.navigationController pushViewController:_viewB animated:YES];

    __weak typeof(self) weakself = self;

     _viewB.showText = ^{

         __strong typeof(weakself) strongself = weakself;

        strongself->_btn.backgroundColor = [UIColor redColor];

    };

}

上一篇 下一篇

猜你喜欢

热点阅读