UITabBarController
のスイッチタブを制御するイベントをキャッチする方法を見つけようとしています。どうすればこれを達成できますか?
ストーリーボードを使用している場合は、これを実行します
didFinishLaunchingWithOptionsで
UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setDelegate:self];
また、AppDelegateで、<UITabBarControllerDelegate>
を保持します
その後
-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
//Write your code here
}
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番目のメソッドは、ビューの切り替えが行われた後に呼び出されます
UITabBarControllerDelegateの次のメソッドを見てください。
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
ユーザーがタブバーでアイテムを選択したことをデリゲートに通知します。
UITabBarControllerDelegate
はあなたが探しているもの、特に-tabBarController:didSelectViewController:
?
決して遅くなるよりはましだ。 Swift 4の場合、次の方法で実行できます。
tabBarViewController.delegate = self
そして、クラスにUITabBarDelegate
を実装します。あなたはでコールバックを取得します
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
//Stuff to do
}