2011-09-19 39 views
4

我需要檢索當用戶點擊過tabbaritem成的UITabBarController改變的東西.. 這裏是我的代碼:IOS檢索時的UITabBarController項目被選中

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
{ 
    if (item == [tabBarController.tabBar.items objectAtIndex:2]) { 
     item.title = @"add shot"; 
    } 
    else 
    { 
     item.title = @"Race"; 
    } 
} 

,但如果我這樣做:

self.tabBarController.tabBar.delegate = self; 

我收到一個SIGKILL ...

什麼是正確的解決方案?在此先感謝

回答

6

您的視圖控制器是否符合UITabBarDelegate協議? 在頭文件:

@interface MyViewController : UIViewController<UITabBarDelegate> { 
    // ... 
} 

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item; 

@end 

然後,就這樣做:

tabBar.delegate = self; 

相反的:

self.tabBarController.tabBar.delegate = self; 

和:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item { 
    //self.tabBarItem.title = @"Title"; 
} 
+0

與tabBarController.delegate不給我SIGKILL,但didSelectItem方法是UITabBarDelegate的,不UITabBarControllerDelegate – ghiboz

+0

更新的答案,嘗試了這一點。 – chown

3

我碰到這個答案而來到學習iOS開發,Bu我想包括像我這樣的n00bs的小缺件。

// HelloWorldViewController.h 
@interface HelloWorldViewController : UIViewController <UITabBarDelegate> 
{ 
} 
@property (weak, nonatomic) IBOutlet UITabBar *tabBar;  
@end 

而且

// HelloWorldViewController.m 
@interface HelloWorldViewController() 

@end 

@implementation HelloWorldViewController 
@synthesize tabBar; 
- (void) viewDidLoad 
{ 
    tabBar.delegate = self; 
} 

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
{ 
     NSLog(@"didSelectItem: %d", item.tag); 
} 

@end 
+0

BRAVO!你讓我今天一整天都感覺很好!偉大的一段代碼,這對我很有用! – Nasenbaer

相關問題