2011-12-22 4 views
0

У меня есть приложение на основе табуляции (контроллер панели добавлен в само окно), и весь контроллер навигации с их соответствующими контроллерами корневого представления устанавливается в xib окна. У меня есть 4 элемента панели вкладок.Как использовать метод делегирования делегата UITabBarController'sSelectViewController

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

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

ответ

8

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

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

Эй, Ник, спасибо много yaar. Эти две линии решили мою проблему. Шляпы у вас мужчина .... :) – anshul

+0

Нет проблем. конечно, будет более элегантный метод. –