0

プログラムでタブを切り替えて、それぞれのナビゲーションコントローラーがルートビューコントローラーにポップするようにしようとしています。タブバーが手動またはプログラムで切り替えられたときに呼び出されるメソッドはありますか?

注: -(void)tabBarController:didSelectViewController:タブバーを手動で切り替えた場合にのみ呼び出されます

4

2 に答える 2

1

プログラムで didSelectViewController を呼び出すこともできます。ここでバビディの答えをチェックしてください:

メソッド「tabBarController:didSelectViewController:」をプログラムでトリガーする方法は?

于 2012-08-21T18:52:24.777 に答える
0

FWIW、これを行う別の方法は、selectedViewController でオブザーバーを使用することです。

// Add Observer
// Note: tabBarController.selectedIndex is not observed as it does not call observeValueForKeyPath on manual switch
[self.tabBarController addObserver:self forKeyPath:@"selectedViewController" options:NSKeyValueObservingOptionNew context:@"changedTabbarIndex"];

// Method for Handling Observations
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    NSString *action = (__bridge NSString*)context;
    if([action isEqualToString:@"changedTabbarIndex"])
    {
        // Stuff to do on selected Tab changed
    }
}

// Change selectedViewController
[self.tabBarController setSelectedViewController:[[self.tabBarController viewControllers] objectAtIndex:kSomeTab]];

詳細: タブバーの項目に触れたときに通知を受け取りませんでした

于 2012-08-21T19:52:07.493 に答える