web-dev-qa-db-ja.com

iPhoneのタブメニューを切り替えるイベントを取得する方法

UITabBarControllerのスイッチタブを制御するイベントをキャッチする方法を見つけようとしています。どうすればこれを達成できますか?

26
Yan

ストーリーボードを使用している場合は、これを実行します

didFinishLaunchingWithOptionsで

UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setDelegate:self];

また、AppDelegateで、<UITabBarControllerDelegate>を保持します

その後

-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
   //Write your code here
}
13
nithinreddy

UITabBarControllerDelegateを実装します。例:アプリデリゲートのapplicationDidFinishLaunching

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    tabBarController.delegate = self;
    [window addSubview:tabBarController.view];
}

次に、次のいずれかを実装します。

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;

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

最初のメソッドはビュースイッチの前に呼び出され、NOを返すことでビュースイッチを「拒否」する機会を与えます。

2番目のメソッドは、ビューの切り替えが行われた後に呼び出されます

35
cidered

UITabBarControllerDelegateの次のメソッドを見てください。

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

ユーザーがタブバーでアイテムを選択したことをデリゲートに通知します。

5
Vladimir

UITabBarControllerDelegateはあなたが探しているもの、特に-tabBarController:didSelectViewController:

1
Costique

決して遅くなるよりはましだ。 Swift 4の場合、次の方法で実行できます。

tabBarViewController.delegate = self

そして、クラスにUITabBarDelegateを実装します。あなたはでコールバックを取得します

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
  //Stuff to do
}
0
vedant shirke