Как я понимаю, у вас есть NavigationController на вашей первой вкладке вашего TabBarController и, при нажатии кнопки на первой вкладке, вы хотите, чтобы ваш NavigationController вернуться к своему корню просмотрите контроллер.
Прежде всего, имейте в виду, что это не поведение по умолчанию TabBarController, и это может быть немного раздражает ваших пользователей. Пользователь может вернуться к корневому представлению навигационного контроллера внутри 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, если это первая вкладка).
Надеюсь, это поможет.
Вы задали 16 вопросов, но еще не отметили ни одного из них с правильным ответом. Чтобы выразить свою благодарность людям, которые предоставили вам БЕСПЛАТНЫЙ совет, я предлагаю вам ознакомиться с вашими вопросами и посмотреть, достаточно ли хорошего ответа, чтобы быть помеченным как правильный на ваш вопрос. – willcodejavaforfood