在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