2016-04-05 9 views
0

を理解しようと、私は次のコードを持っている:私ViewControllersの一つでTabBarDelegate

- (void)viewDidLoad 
{ 
    UITabBarController *tabBarController = (UITabBarController*)[UIApplication sharedApplication].keyWindow.rootViewController ; 
    [tabBarController setDelegate:self]; 
} 

と:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController: (UIViewController*)viewController { 
    NSLog(@"Yup!"); 
} 

私は、マルチタブの設定でタブを切り替えるたびに、コンソールは

を出してくれるし

うん

とまったく同じです。しかし

、私は 'うん' もう表示されません。私のAppDelegate.mの

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: 

UITabBarController *tabController = (UITabBarController*)self.window.rootViewController; 
tabController.selectedIndex = 1; 

を追加します。

どうしてですか?

答えて

0

デフォルトタブを設定するかのselectedIndexを変更したいしたいときdidSelectViewController意志ほとんどが便利、アプリ自体から/変更タブを選択すると、あなたはプログラムで

tabController.selectedIndex = 1;のselectedIndexを設定すると、それは呼び出しません呼び出します。プログラムでapple docから


- (無効)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(のUIViewController *)のViewController

タブバーのユーザータップに応答してのみ呼び出され、プログラムによってタブバーの内容が変更されたときには が呼び出されません。

あなたはこのように、手動でそのメソッドを呼び出して試すことができます:

- (void) selectedItemWithIndex:(int)value { 
    tabbar.selectedIndex = value; 
    [self tabBarController:tabbar didSelectViewController:tabbar.viewControllers.firstObject];//place you vc here by array or manually 
} 

参考:https://stackoverflow.com/a/30700712/4557505

+0

理にかなって、私は、私は、タブを変更したときに「うん」は、それにもかかわらずで蹴るだろうと期待します – Sjakelien

+0

@Sjakelienは答えを – HardikDG

+0

に更新しました。AppDelegateのメソッドが他の機能をキャンセルする理由はまだわかりません。そして私はスウィフトをするには年をとっています。 – Sjakelien

関連する問題