更改UITabBar选项卡时关闭DetailController?

时间:2013-03-22 18:24:26

标签: iphone objective-c cocoa-touch uitableview uitabbarcontroller

我正在开发一个应用程序,其中UINavigationController嵌入UITabBarControllerUINavigationController有一个UITableView,当点按一个单元格时会转换为 DetailController

我的问题是:我在 [TAB1] 上选择一个单元格并转换到 DetailController 。如果我选择 [TAB2] ,然后返回 [TAB1] ,它仍然在详细控制器上。无论如何选择 [TAB2] ,我可以在 [TAB1] 上展开/关闭 DetailController (即显示表格视图再次细胞)。

我的另一种想法是,这样做不会让UI处于用户离开状态的状态,即在查看 DetailController 并按 [TAB2] 之后返回 [TAB1] 会向用户显示UITableView中的单元格。如果你离开 TAB ,应用程序恢复 DetailController 会感觉更好,这就是我要问的原因......

注意:I present the *DetailController* via a push segue from the UITableViewCell .

1 个答案:

答案 0 :(得分:2)

您可以实施UITabBarControlleDelegate,并在更改标签时使用UINavigationController返回popToRootViewControllerAnimated:的根视图。

代码示例:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    tabBarController.delegate = self;
    return YES;
}

  - (BOOL)tabBarController:(UITabBarController *)tabBarController
shouldSelectViewController:(UIViewController *)viewController
{
    UIViewController *currentController = tabBarController.selectedViewController;
    if ([currentController isKindOfClass:[UINavigationController class]])
         [(UINavigationController *)currentController popToRootViewControllerAnimated:NO];
    return YES;
}