2012-12-04 1 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

しかし、それは仕事をdoesntの、接続は何ですか?あなたの@interface(とあなたのその後の画面のスナップショット)に基づいて

+0

どのように作成していない 'MainTab'オブジェクト?? –

+0

@Robはい、あなたは正しいです - 私は何とか質問の「コントローラ」部分を見逃していました。それはタブバーコンポーネントを備えたカスタムコントローラだと思っていました。私は自分のコメントを削除し、あなたの詳細な答えに投票しました。 – dasblinkenlight

答えて

15

MainTabUITabBarControllerあるので、次の行:

self.tabBarController.delegate = (id)self; 

だけであるべき:

self.delegate = self; 

あなたはしないでくださいUITabBarController自体にtabBarControllerプロパティが必要で、self.tabBarControllerという構文も使用しないでください。子コントローラの1つからタブバーコントローラを参照しようとしている場合にのみ、その構文を使用します。タブバーコントローラ自体にある場合は、selfを参照してください。

// 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 

そして、タブバーコントローラのクラスを設定することを忘れないでください:

MainBarは次のように定義されている場合


したがって、それは動作します

interface builder

(私は事を触れていない)接続の検査官は、次のようになります。

outlets

+0

あなたが言ったことはかなり面白いですが、それでも仕事はしません – user1256477

+0

いいえ、私はできません!私が+ドラッグをコントロールしようとすると、TabItemsを移動する – user1256477

+1

MainTabが正しく設定されました。NSLogでチェックしました。あなたのコードで解決されました。 – user1256477

関連する問題