在Three20的例子程序中没有找到如何获取TTTabBar、TTTabGrid、TTTabStrip的事件如何处理,也就是说以上三个类管理的TTTabItem对象被选择时,没有收到消息。经过对相关类的原代码进行分析,跟踪,发现,在TTTabBar中有一个deletage变量,该变量是TTTabDelegate类型,因此,对消息处理马上有思路了。如下,几步就可以获取消息了。
1.在TabBarTestController.h中的头文件进行修改,加入<TTTabDelegate>。如下:
@interface TabBarTestController : TTViewController<TTTabDelegate>
2.在TabBarTestController.m中进行修改,加入
// 回调设置
_tabBar1.delegate = self;
//
// deletage for tab select event
//
- (void)tabBar:(TTTabBar*)tabBar tabSelected:(NSInteger)selectedIndex
{
if([tabBar isKindOfClass:[TTTabStrip class]])
{
NSLog(@"TTabStrip select:%d", selectedIndex);
}else if([tabBar isKindOfClass:[TTTabGrid class]])
{
NSLog(@"TTTabGrid select:%d", selectedIndex);
}else if([tabBar isKindOfClass:[TTTabBar class]])
{
NSLog(@"TTTabBar select:%d", selectedIndex);
}
}
2012-12-28 14:56:54.201 TTCatalog[6709:11303] TTTabBar select:0
2012-12-28 14:56:56.185 TTCatalog[6709:11303] TTTabBar select:1
2012-12-28 14:56:57.184 TTCatalog[6709:11303] TTTabBar select:2
2012-12-28 14:56:58.072 TTCatalog[6709:11303] TTTabBar select:3
2012-12-28 14:57:01.185 TTCatalog[6709:11303] TTTabGrid select:1
2012-12-28 14:57:02.105 TTCatalog[6709:11303] TTTabGrid select:2