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

总结

posted on 2015-01-13 10:33  沉淀2014  阅读(432)  评论(0编辑  收藏  举报

导航