Удалить UITABBARITEM
-
26-09-2019 - |
Вопрос
Как я могу удалить 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];
Это слоите его чисто на вершине старого табра, и он поддерживает свою функциональность.