Отключить действие - отладить пользователя на элементе табло, чтобы перейти в контроллер корневого представления
Я хочу отключить действие по умолчанию, когда пользователь удаляет элемент вкладки.
Например, у меня есть вкладка с Tab1, Tab2 и Tab3. В Tab1 пользователь может перемещаться из View1 в View3 (View1 > View2 > View3). Если пользователь находится в View3, и он вводит Tab1, приложение переводит пользователя в View1 (контроллер корневого представления). Я хочу отключить эту функцию. Я не хочу, чтобы кран на Tab1 отображал все контроллеры представлений. Как я могу это сделать?
Edit:
Это поведение немного странно, но удобный ярлык в случае глубокой иерархии!
Вы можете реализовать следующие методы UITabBarControllerDelegate, чтобы отключить ярлык этой системы:
#pragma mark -
#pragma mark UITabBarControllerDelegate
- (BOOL)tabBarController:(UITabBarController *)tbc shouldSelectViewController:(UIViewController *)vc {
UIViewController *tbSelectedController = tbc.selectedViewController;
if ([tbSelectedController isEqual:vc]) {
return NO;
}
return YES;
}
Ответы
Ответ 1
если вы посмотрите на делегат UITabBarController, есть метод:
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
Если вы реализуете это в своем классе, вы можете проверить, является ли UIViewController уже отображаемым, а затем возвращать NO, что остановит это.
У меня была та же проблема с объектом ABPeoplePicker, встроенным в UITabBarController, в том, что нажатие на вкладку "Контакты" во второй раз, которое уже было показано, сделает элемент управления ABPeoplePacker "Группой"