Skip to content
i5ting edited this page May 14, 2013 · 3 revisions

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

总结