Вопрос

Как я могу удалить UITabBarItem из UITabBar?

Я ничего не пробовал, потому что я ничего не нашел от поиска Google или документации для UITabBar, UITabBarController, или UITabBarItem.

Заранее спасибо! :)

Это было полезно?

Решение

Уитаббар имеет АН Натрарг Коллекция предметов. Так как свойство товаров является Nsarray, а не Nsmutablearray., Вам придется построить новый NSARRAY от существующего, лишенного объекта, который вы хотите удалить, то установите свой свой свой свой свой свой свой ролик на новый массив.

/* suppose we have a UITabBar *myBar, and an int index idx */
NSMutableArray *modifyMe = [[myBar items] mutableCopy];
[modifyMe removeObjectAtIndex:idx];
NSArray *newItems = [[NSArray alloc] initWithArray:modifyMe];
[myBar setItems:newItems animated:true];

Другие советы

Совет Майка Карона бросит исключение Если вы намереваетесь изменить TABBAR, который принадлежит контроллеру.

В iOS 3.0, а позже вы не должны пытаться использовать методы и свойства этого класса для изменения полоса вкладок, когда она связана с объектом контроллера вкладок. Изменение полоса вкладок таким образом приводит к образованию исключения. Вместо этого любые модификации в полосу вкладки или его элементы должны произойти через интерфейс контроллера вкладки. Вы все еще можете напрямую изменять объект вкладок, который не связан с контроллером вкладок.

В этом случае self.tabBarItem=nil удалит это.

Примечание: кажется, что это не работает в iOS 11. Это было все еще хорошо в iOS 10.

Это умеренно ужасный ответ, на мой взгляд, частично из-за того, что он подрывает руководящие принципы человеческого интерфейса, но все равно кажется, что чисто работают:

UITabBar *oldbar = self.tabBarController.tabBar;
UITabBar *newbar = [[UITabBar alloc] initWithFrame:CGRectMake(0,0,oldbar.frame.size.width,oldbar.frame.size.height)];
NSMutableArray *olditems = [[oldbar items] mutableCopy];
[olditems removeObjectAtIndex:0];
NSArray *newitems = [[NSArray alloc] initWithArray:olditems];
[newbar setItems:newitems animated:false];
[oldbar addSubview:newbar];

Это слоите его чисто на вершине старого табра, и он поддерживает свою функциональность.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top