2012-12-04 63 views
5

我知道這是一個非常重複的話題,但我無法得到它的工作。TabBarController didSelectViewController不工作

MainTab.h:

#import <UIKit/UIKit.h> 

@interface MainTab : UITabBarController<UITabBarControllerDelegate, UITabBarDelegate> { 

    IBOutlet UITabBarController *tabController; 

} 

@property (nonatomic,retain) IBOutlet UITabBarController *tabController; 

@end 

MainTab.m

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
    if (self) { 
     // Custom initialization 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    NSLog(@"main tab"); 
    [super viewDidLoad]; 

    self.tabBarController.delegate = (id)self; 
    [self setDelegate:self]; 

    // Do any additional setup after loading the view. 
} 

- (void)viewDidUnload 
{ 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
} 


-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 

    NSLog(@"selected %d",tabBarController.selectedIndex); 

} 

我無法找到我錯過了什麼,任何幫助將不勝感激。

現在,我嘗試將其鏈接到MainStoryBoard:

enter image description here

enter image description here

但它不工作,有什麼聯繫呢?

+0

如何創建'MainTab'對象? –

+0

@Rob是的,你是對的 - 我不知何故錯過了問題的「控制器」部分,認爲它是一個帶有標籤欄組件的自定義控制器。我刪除了我的評論,並投票給您詳細的答案。 – dasblinkenlight

回答

15

在您@interface(和你的後續屏幕快照)的基礎上,MainTabUITabBarController,所以下面一行:

self.tabBarController.delegate = (id)self; 

應該僅僅是:

self.delegate = self; 

你不想要UITabBarController本身中的tabBarController屬性,您也不想使用self.tabBarController語法。如果您試圖從其子控制器之一引用標籤欄控制器,則只能使用該語法。在標籤欄控制器本身中,請參閱self


因此,如果MainBar被定義爲它的工作:

// MainBar.h 

#import <UIKit/UIKit.h> 

@interface MainBar : UITabBarController 

@end 

而且

// MainBar.m 

#import "MainBar.h" 

@interface MainBar() <UITabBarControllerDelegate> 

@end 

@implementation MainBar 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.delegate = self; 
} 

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
{ 
    NSLog(@"selected %d",tabBarController.selectedIndex); 
} 

@end 

而且不要忘記設置類標籤欄控制器:

interface builder

的連接檢查(如果我沒碰的事)看起來像:

outlets

+0

你說的很有意思,但它仍然不起作用 – user1256477

+0

不,我不能!當我嘗試控制+拖動我移動TabItems – user1256477

+1

MainTab被正確設置,我有一個NSLog來檢查它,它解決了與您的代碼 – user1256477

相關問題