Как я понимаю, у вас есть NavigationController на вашей первой вкладке вашего TabBarController и, когда вы нажимаете на первую вкладку, вы хотите, чтобы ваш NavigationController вернулся к своему корневому контроллеру представления.
Прежде всего, имейте в виду, что это не стандартное поведение TabBarController, и оно может быть немного раздражающим для ваших пользователей. Пользователь может вернуться к корневому представлению NavigationController внутри TabBarController, коснувшись вкладки во второй раз.
Зная это, если вы все еще хотите изменить поведение по умолчанию вашего TabBarController, вот что вы можете сделать:
Установите класс AppDelegate в качестве делегата вашего UITabBarController. Он должен реализовывать протокол UITabBarControllerDelegate
, и вы должны написать что-то вроде этого:
[myUITabBarController setDelegate:self];
внутри вашего приложения didFinishLaunchingWithOptions:
метод.
Затем внедрите этот метод в свой AppDelegate.
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if ([tabBarController selectedIndex] == kMyNavigationControllerIndex) {
[(UINavigationController *)[tabBarController selectedViewController] popToRootViewControllerAnimated:NO];
}
}
, где kMyNavigationControllerIndex
- это постоянное значение, содержащее индекс NavigationViewController, который вы хотите изменить (т. Е. 0, если это первая вкладка).
Надеюсь, это поможет.