在
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
做
[viewController.navigationController popToRootViewControllerAnimated:YES];
只要选择了选项卡,就会将选项卡的视图控制器导航到根视图。
将主窗口视图控制器(标签栏控制器)实例保留在应用程序委托中是完全可以的。
您需要添加的是将委托或任何其他初始化类设置为标签栏控制器的委托,如下所示:
myTabBarController = [UITabBarController alloc ...
myTabBarController.delegate = self; // the app delegate will be also the tab bar delegate
在应用程序委托中,然后将以下方法添加到应用程序委托:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
[viewController.navigationController popToRootViewControllerAnimated:YES];
}
只要选择它的选项卡,“选项卡”条控制器将调用此方法。您还需要让应用程序委托以UITabBarControllerDelegate
这种方式确认:
@interface PSAppDelegate : UIResponder <UITabBarControllerDelegate>
这将使编译器知道应用程序委托必须或可能具有在协议中声明的方法,并且还将为您提供非常方便的此方法的自动编译。