2012-06-08 10 views
7

を動作していないようだ:私はこれを持っている私のメインのファイルでタブバーdidSelectItemは、私がこれを持って私のヘッダファイルで

@interface TabBarController : UIViewController <UIApplicationDelegate, UITabBarDelegate, UITabBarControllerDelegate>{ 

    IBOutlet UITabBarController *tabBarController; 

} 

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

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

@end 

@synthesize tabBarController; 

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    self.tabBarController.delegate = self; 
    self.view = tabBarController.view; 
} 

-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{ 
    NSLog(@"rawr"); 
} 

- (void)viewDidUnload { 
    [super viewDidUnload]; 
} 

- (void)dealloc { 
    [tabBarController release]; 
    [super dealloc]; 
} 


@end 

私はすでにへの委譲としての私のtabbarcontrollerが接続されています私のファイルの所有者は、インターフェイスビルダーでは、それでもdidSelectItemメソッドを呼び出すことはありません。

ここには何か不足しているものがありますか?

私はすでにtabBarController.delegate = self;を追加していますが、まだ動作しません。

+1

プログラムで行うとどうなりますか?私は、 'tabBarController.delegate = self;'?依然として (ボイド)のviewDidLoad {; \t tabBarController.delegate =自己; \t self.view = tabBarController.view \t [スーパーのviewDidLoad]} - を: –

+0

はSTIL –

答えて

1

あなたは、これを追加する必要があります。

+0

を追加しようとした:(動作しません –

0

あなたは、タブバーを合成しました。 self.tabBarController.delegate = self;を設定するか、Tabbarcontrollerオブジェクト(barではなく)にInterface builder doを使用して設定できます。接続インスペクタを参照して、ファイルの所有者に接続をドラッグします。

+0

動作しない追加する試み: - (ボイド)のviewDidLoad { \t [スーパーのviewDidLoad]; \t self.tabBarController.delegate =自己; \t self.view = tabBarController.view; } まだ動作していません –

0

self.tabBarController.delegate = self;ちょうどタブバーのデリゲートを設定します。あなたは今、書く必要があるので、

tabbarcontroller.delegate = self; 
+0

は既にありましたが、まだ動作しません –

+0

おそらく私は考え出しました。そのメソッドが必要な場合 - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;呼び出すには、tabbarデリゲートプロパティをselfに設定する必要があります。だから、そのようなものを試してみてください。self.tabBarController.tabBar.delegate = self;私がself.tabBarController.tabBar.delegate = selfを入力すると、 – Andrea

+0

は動作しません。 viewDidLoad内の。それは私にエラーを与える キャッチされていない例外 'NSInternalInconsistencyException'のため、アプリケーションを終了しています、理由: 'タブバーコントローラによって管理されているタブバーの代理人を変更することはできません。 –

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

この方法はとても

self.tabBarController.delegate = self; 

が動作しません、UITabBar、ないUITabBarControllerのためのデリゲートメソッドです。

タブバーコントローラは、独自のUITabBarを持っていますが、タブバーコントローラによって管理さタブバーのデリゲートを変更することが許可されていないので、ちょうどこのようUITabBarControllerDelegate方法を試してみてください。

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 
+4

'UITabBarControllerDelegate>'をアプリケーションデリゲートの.hに追加することを忘れないでください。 'UITabBarController * tabBarController =(UITabBarController *)self.window.rootViewController; 'didFinishLaunchingWithOptions'メソッドの中で tabBarController.delegate = self;' – Patrick

-1

多くの理由がありますが、上に示したように、なぜそれが動作していない可能性があります。ここにはもっと微妙な理由があります。プログラムでUIを作成する場合(ストーリーボードまたはXibなし)、UIWindowの画面を設定する必要があります。

self.window = [[UIWindow alloc] init]; 
self.window.screen = [UIScreen mainScreen]; // <- The UITabViewController will not 
              // accept taps without this. 

Xibを使用している場合、これは「起動時のフルスクリーン」を選択した場合と同じだと思います。それはチェックされなければならない、または私は私のタブが動作しないことに気づいた。

更新:私はあなたがしなければならないが、私は動作していないタブコントローラを持っていた、これは私がそれを働かせるためにしなければならなかったものです。このページの他の回答は私には役に立たなかった。私はxib/storyboardを使用していると思うのですが、最近はかなりまれです(これはiOS 5日間だったと思いますが)。

1

利用UITabBarControllerDelegate代わりのUITabBarDelegate
-tabBarController:didSelectViewController{}の代わりtabBar:didSelectItem{}

インタフェース

@interface TabBarController : UIViewController <UIApplicationDelegate, UITabBarControllerDelegate, UITabBarControllerDelegate>{ 

    IBOutlet UITabBarController *tabBarController; 
} 
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController; 
@end 

メインファイル

@implementation TabBarController 
    @synthesize tabBarController; 

    /*other stuff*/ 
    - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{ 
     NSLog(@"rawr"); 
    } 
    /*other stuff*/ 
@end 
+1

私はこの問題を自分で解決しました。このソリューションは完全に機能します。ありがとうございました! – CodeNoob

関連する問題