甘いものが好きです

iOS App開発時に感じた疑問や課題、その他の雑感などを書いていきます。

タブ選択時に選択されたタブに対応するViewControllerのRootViewを表示する

iOS Appではタブ選択時には対応するViewControllerのRootViewを表示すべき? - 甘いものが好きです

上記リンクの記事では、タブ選択時にはそのタブに対応するViewControllerのRootViewを表示すべきことがAppleの資料に記載されていることを指摘した。そこで、実際にタブが選択されたときにNavigation ControllerのRootViewを表示する方法を本記事にて説明する。

TabBarControllerを管理するクラスでUITabBarControllerDelegateを実装し、タブ選択時にコールされるデリゲートメソッドtabBarController:didSelectViewController:内で、選択されたタブに対応するViewControllerがNavigationViewControllerである場合にはRootViewを表示するためのコードを追加する。コードの例を以下に示す。

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    
    if ([viewController isKindOfClass:[UINavigationController class]]) {
        UINavigationController *navigationController = (UINavigationController *)viewController;
        [navigationController popToRootViewControllerAnimated:NO];
    }
}