人们如何在UITabBarController下弹出他们的UINavigationController堆栈?

Rex*_*ids 1 iphone xcode uitabbarcontroller uiviewcontroller uinavigationcontroller

我有四个UINavigationControllers分配给UITabBarController中的一个选项卡.每个UINavigationController都管理一个UIViewController,它本身可以分支到它下面的其他UIViewControllers.

我的问题是,如果用户在一个选项卡下导航到UIViewController,该UIViewController低于UINavigationController管理的主UIViewController,然后用户推送另一个选项卡,然后返回原始选项卡,我如何才能使用户看到由UINavigation控制器管理的主UIViewController?而不是他离开的页面?

UITabBarController在IB中设置

Ole*_*ann 7

UITabBarControllerDelegate每当您的代表被通知用户已选择其他选项卡时,实施协议并弹出到根控制器.

就像是:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    [viewController.navigationController popToRootViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

上面的代码应弹出到任何导航控制器的根控制器,该控制器是新选择的选项卡的主视图控制器.您可以尝试在应用程序委托中实现协议.并且不要忘记实际将应用程序委托指定为选项卡栏控制器的委托.