Подтвердить что ты не робот

Отключить действие - отладить пользователя на элементе табло, чтобы перейти в контроллер корневого представления

Я хочу отключить действие по умолчанию, когда пользователь удаляет элемент вкладки.

Например, у меня есть вкладка с 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;
}
4b9b3361

Ответ 1

если вы посмотрите на делегат UITabBarController, есть метод:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController

Если вы реализуете это в своем классе, вы можете проверить, является ли UIViewController уже отображаемым, а затем возвращать NO, что остановит это.

У меня была та же проблема с объектом ABPeoplePicker, встроенным в UITabBarController, в том, что нажатие на вкладку "Контакты" во второй раз, которое уже было показано, сделает элемент управления ABPeoplePacker "Группой"