Я предлагаю вам взглянуть на метод UITabBarDelegate
: tabBarController:didSelectViewController:
в сочетании с методом UINavigationController
: popToRootViewControllerAnimated:
Поэтому, когда пользователь выбирает вкладку, вы можете убедиться, что навигация начинается с корневого контроллера.
Редактировать в ответ на комментарий:
Это не идеальная ситуация, но вы можете ссылаться на UITabBarController в делегате приложения. E.g.:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Get reference to Tab Bar Controller as the root view
UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
// Set Delegate
tabBarController.delegate = self;
return YES;
}
Затем вы можете реализовать метод UITabBarDelegate, подобный следующему:
-(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
// Pop to root if the selected controller is a navigation controller.
if ([viewController isKindOfClass:[UINavigationController class]]) {
[((UINavigationController *)viewController) popToRootViewControllerAnimated:NO];
}
}
Я еще не проверял это!