タブ選択時に選択されたタブに対応する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]; } }