iOS – タブを切り替えたときに処理を実行する

iPhoneのタブの切替

UITabBarControllerwを使用することでタブ機能を実現することができると思いますが、このメモではタブを切り替えたタイミングで処理を行う方法について紹介します。

…ただ、この方法がベストプラクティスとは思えないので、もっといい方法があれば是非教えてくださいm(__)m

 

方法
以下の.hファイルのソースのように、UITabBarControllerwを継承した新しいクラスを作成します。また、このクラスにUITabBarControllerDelegateプロトコルに対応していることを宣言します。

// TWTabBarController.h
@interface TWTabBarController : UITabBarController<UITabBarControllerDelegate>@end

.mファイルにはUITabBarControllerDelegateプロトコルのデリゲート先を新しく作成したクラスに指定し、そのデリゲートメソッドを実装します。このデリゲートメソッド内の処理がタブ切替時に呼び出される処理になります。

// TWTabBarController.m
@implementation TWTabBarController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // デリゲート先を本クラスに指定
    self.delegate = self;
}

// タブが切替られたときに呼び出されるデリゲートメソッド
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    // ここに記述された処理がタブの切替時に呼び出される
}

最後に、このTabControllerクラスをStoryboard上のUITabBarControllerwと紐付けます。Storyboardを開いてTab Bar Controllerを選択し、Custom Classに新たに作成したクラス名を設定します。
Custom Classに新たに作成したTabBarControllerクラスを指定

 

まとめ

  • UITabBarControllerDelegateプロトコルを実装し、そのデリゲートメソッド内にタブ切替時に行いたい処理を記述する