Как я могу удалить UITabBarItem
из UITabBar
?Удалить UITabBarItem
Я ничего не пробовал, потому что я ничего не нашел от поисков Google или документации для UITabBar
, UITabBarController
или UITabBarItem
.
Заранее благодарен! :)
Как я могу удалить UITabBarItem
из UITabBar
?Удалить UITabBarItem
Я ничего не пробовал, потому что я ничего не нашел от поисков Google или документации для UITabBar
, UITabBarController
или UITabBarItem
.
Заранее благодарен! :)
UITabBar имеет NSArray набор предметов. Поскольку свойство items является NSArray, а не NSMutableArray, вам придется построить новый NSArray из существующего, лишенный объекта, который вы хотите удалить, а затем установить свойство items в новый массив.
/* 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];
Помните, что '- [NSArray mutableCopy]' ваш друг. Кроме того, не забывайте '- [UITabBar setItems: анимированные:]'. –
http://developer.apple.com также является вашим другом;) –
совет Майк Карон will throw an exception, если вы собираетесь изменить TabBar, который принадлежит к контроллеру.
В прошивкой 3.0 и выше, вы не должны попытки использовать методы и свойства этого класса, чтобы изменить панель вкладок, когда он связан с вкладками объектом бара контроллера. Модифицируя , панель табуляции таким образом приводит к выбросу исключения . Вместо этого любые изменения в панели вкладок или их элементов должны выполняться через панель интерфейса ввода-вывода . Вы можете еще непосредственно изменить объект панели вкладок, который не связан с панелью вкладок контроллер.
В этом случае self.tabBarItem=nil
удалит его.
В iOS 11 self.tabBarItem = nil только делает место хранения пустым, оно фактически не перетасовывает элементы, чтобы заполнить «удаленный» элемент. :( –
https://stackoverflow.com/a/9908361/856925 имеет ответ, который все еще работает - удалите viewcontroller из списка контроллеров viewbarcontroller viewcontrollers. –
Примечания: это, кажется, не работает в прошивке 11. Это было все еще хорошо в прошивкой 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];
это пласты, чисто поверх старого TabBar, и она сохраняет свою функциональность.
Привет, @esqew, что вы уже пробовали? http://stackoverflow.com/questions/how-to-ask – jcolebrand
Я ничего не пробовал, потому что ничего не нашел от поисков Google или документации для 'UITabBar',' UITabBarController' или 'UITabBarItem'. – esqew