https://github.com/i5ting/Bee_Tutorial/wiki/BeeUISignal%E8%AF%A6%E8%A7%A3
BeeUISignal是beeframework的核心,通过signal价值完成对各种变动的集中路由.是冒泡式的向上传递。
beeUISignal扩展
在UIView和UIViewController里都可以使用
详见:
- UIView+BeeUISignal
- UIViewController+BeeUISignal
可用方法
4个可用方法,实际上是2个
- (void)handleUISignal:(BeeUISignal *)signal;
- (BeeUISignal *)sendUISignal:(NSString *)name;
- (BeeUISignal *)sendUISignal:(NSString *)name withObject:(NSObject *)object;
- (BeeUISignal *)sendUISignal:(NSString *)name withObject:(NSObject *)object from:(id)source;
handleUISignal方法
- (void)handleUISignal:(BeeUISignal *)signal
{
if ( self.superview )
{
[signal forward:self.superview];
}
else
{
signal.reach = YES;
#if defined(__BEE_DEVELOPMENT__) && __BEE_DEVELOPMENT__
CC( @"... [%@] > %@", signal.name, signal.callPath );
#endif // #if defined(__BEE_DEVELOPMENT__) && __BEE_DEVELOPMENT__
}
}
- 如果有superview,BeeUISignal会向上传递
- 如果没有superview,自己处理,并中断BeeUISignal的向上传递
此方法比较典型的用法是Bee_UIStack里
- (void)handleUISignal:(BeeUISignal *)signal
{
if ( signal.source != self )
{
BeeUIBoard * board = self.topBoard;
if ( board )
{
[signal forward:board];
}
return;
}
else
{
// TODO: 自己发给自己的
}
}
sendUISignal方法
有3个版本的sendUISignal重写方法
这里我们用
- (BeeUISignal *)sendUISignal:(NSString *)name withObject:(NSObject *)object from:(id)source;
说事。
参数列表
- name BeeUISignal名字,用于区分不同signal的唯一标识
- object 传递的参数对象(比如按钮的tag或者顺序,行号等)
- source (todo:BeeUISignal源:即发送signal的源头)
返回值 返回BeeUISignal对象,这个很少用到,只有当需要XX的时候才会用。
关于source:如果没有设置,它的默认值是self。