2010-11-16 4 views
0

Как скрыть отдельную кнопку панели вкладок?iPhone, как я скрываю кнопку панели вкладок?

Я искал и ничего не нашел, только полный бар.

Я сделал некоторый прогресс, но все еще имею проблемы, этот код находится в моем делете делегата с выходом на панель вкладок, я вызываю его в пределах viewDidLoad первого представления, показанного на панели вкладок.

-(void)hideTabButton { 
NSMutableArray *aItems = [[rootTabBar items] mutableCopy]; 
for (UITabBarItem *tabButton in aItems) { 
    if ([tabButton.title isEqualToString:@"First"]) {   
     [aItems removeObject:tabButton]; 
     break; 
    } 
} 
[rootTabBar setItems:aItems animated:YES]; 
[aItems release]; 
} 

Но это дает мне ошибку, это не представляется возможным в противном случае, почему у setItems.

Terminating app due to uncaught exception 'NSInternalInconsistencyException', 
reason: 'Directly modifying a tab bar managed by a tab bar controller is 
not allowed.' 
Call stack at first throw: 

Heres мой полный код, думаю, что я рядом. My Sample project

ответ

3

Для этого вам необходимо использовать setItems:animated:. Создание массива кнопок, которые вы хотите сохранить на UITabBar и передать его в этот метод экземпляра:

[myTabBar setItems:itemsToKeep animated:TRUE]; 

Ссылка: http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBar_Class/Reference/Reference.html

+0

Могу ли я загрузить элементы в массив из кнопок, которые я создал в IB? – Jules

+0

Да, создайте NSMutableArray с 'myTabBar.items'. Используйте метод 'removeObject:' в массиве, чтобы удалить определенную кнопку по имени. Убедитесь, что кнопки (кнопки), которые вы хотите удалить, подключены к коду. –

+0

Вы хотите удалить представление, связанное с кнопкой, или просто хотите скрыть одну кнопку? –

1

В старой теме Tab bar Controller raising NSInternalInconsistencyException я нашел предупреждение использовать выход к правильно. У меня была эта проблема до и получила ошибку:

Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «Невозможно изменить панель вкладок, управляемую контроллером панели вкладок».

Но эта ошибка была только для устройств с iOS 3.1.x, а не с iOS 4.x.

Чтобы найти способ запуска моей программы на старых устройствах с 3.1.x, я сначала удалил выход и все ссылки на него, даже в IB.

Поскольку мне нужно отключить некоторые вкладки, я не нашел другого способа сделать это. Поэтому я переустановил выход и все ссылки на него. Теперь это тот же код, что и раньше, и он работает!

Так что стоит попробовать сделать то же самое.

Смежные вопросы