Как использовать метод делегата UITabBarController shouldSelectViewController - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть приложение на основе вкладок (контроллер вкладок добавляется в самом окне), и все навигационный контроллер с соответствующими контроллерами корневого представления устанавливаются в xib окна.У меня есть 4 панели вкладок.

Предположим, я щелкаю по пункту 1, затем мне показывается контроллер корневого представления для этого элемента.Это корневое представление содержит таблицу с 5 ячейками.Если я нажимаю на строку, то новое представление помещается в стек навигации.Теперь у этого выдвинутого вида есть кнопка, которая снова будет выдвигать новый контроллер вида.У меня есть 4 таких контроллера представления, которые выталкиваются один за другим в стек навигации.

Теперь, допустим, я нахожусь на третьем представлении в стеке навигации и затем я нажал на элемент панели вкладок 1 (то жена который я нажимал ранее);затем отображается первый контроллер корневого представления и весь мой стек навигации пропал.Я просто не хочу, чтобы это произошло, то есть я хочу остаться на третьем контроллере представления, а также иметь возможность щелкать по всем элементам панели вкладок (не хочу отключать какой-либо элемент).Я знаю, что это может быть достигнуто путем реализации метода делегата контроллеров панели вкладок: shouldSelectViewController, но я не знаю, как ??

1 Ответ

8 голосов
/ 22 декабря 2011

выполнить проверку для текущего выбранного viewcontroller.если текущий совпадает с нажатием вкладки, то в методе делегата верните no.Подумайте, что-то вроде этого, что вы имеете в виду?

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController; 
{
if ([[tabBarController viewControllers] objectAtIndex:tabBarController.selectedIndex] == viewController)
    {
    return NO;
    }
else
    {
    return YES;
    }   
}
...