首页 > 代码库 > BeeUISignal详解

BeeUISignal详解

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__    }}
  1. 如果有superview,BeeUISignal会向上传递
  2. 如果没有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。

如何扩展View

如何扩展ViewController

总结

BeeUISignal详解