2010-11-04 142 views
1

Hello 通常,如果您處於具有Tabbar-Navigationbar組合的UINavigation層次結構中,並且您按TabBar項目,您將返回到rootviewControler。處理按TabBar項目時觸發的事件

我需要得到這個事件 - >按下一個tabbar項目,如果它的激活。這是否有可能捕捉到這個事件?

問候

回答

0

讓您的視圖控制器符合UITabBarDelegate協議並實施tabBar:didSelectItem:我通常我可以在代碼中使用來決定做什麼標籤設置UITabBarItems。

@interface MyViewController : UIViewController <UITabBarDelegate> 
{ 
} 
@end 

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 
    enum { 
     FooButton = 1, // Presumably you set these up in IB or in code elsewhere 
     BarButton, 
     BazButton 
    }; 

    switch(item.tag) { 
     case FooButton: 
      [self doTheFooThing]; 
     break; 
     // ... Other cases here 
    } 
} 
+0

我已經在這樣做。但是,如果我還沒有選擇它時按下tabbar項目,thios也會觸發。我需要觸發一個事件,當我點擊一個TabItem時,它已經被選中。如果從一個水龍頭走到另一個水龍頭,這個事件不應該觸發 – grobald 2010-11-05 11:16:42

+0

無論您是否點擊已選擇的項目,都會觸發。也許你可以在那裏放置代碼,以忽略如果它是在一個尚未被選中的項目上的水龍頭? – zpasternack 2010-11-05 17:41:52

1

我得到它:

//NSLog(@"TabItem %@ tapped with tag: %d", viewController.tbItem.title, viewController.tbItem.tag); 
if ([viewController.tbItem.title isEqualToString:NSLocalizedString(@"FEATURE_NEARBY", nil)]) { 
    if([((MyNavigationController*)(self.selectedViewController)).visibleViewController isKindOfClass:[MyViewController class]]){ 
    [(MyViewController*)((MyNavigationController*)(self.selectedViewController)).visibleViewController myFunction]; 
    } 
}