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];
};
}