首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除UITabBarItem

删除UITabBarItem
EN

Stack Overflow用户
提问于 2010-10-28 03:58:01
回答 3查看 3.2K关注 0票数 5

如何从UITabBar中删除UITabBarItem

我没有尝试任何东西,因为我没有从谷歌搜索或UITabBarUITabBarControllerUITabBarItem的文档中找到任何东西。

提前感谢!:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-28 04:04:57

UITabBar有一个项目的NSArray集合。由于items属性是一个NSArray而不是NSMutableArray,因此必须从缺少要删除的对象的现有NSArray构造一个新的数组,然后将items属性设置为新的数组。

代码语言:javascript
复制
/* 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];
票数 9
EN

Stack Overflow用户

发布于 2011-01-10 14:55:42

如果你打算修改一个属于控制器的tabBar,Mike Caron的建议是will throw an exception

在iOS 3.0及更高版本中,当选项卡栏与选项卡栏控制器对象相关联时,不应尝试使用此类的方法和属性来修改该选项卡栏。以这种方式修改选项卡栏将导致抛出异常。相反,对选项卡栏或其项的任何修改都应通过选项卡栏控制器接口进行。您仍然可以直接修改未与选项卡栏控制器关联的选项卡栏对象。

在这种情况下,self.tabBarItem=nil将删除它。

票数 4
EN

Stack Overflow用户

发布于 2013-02-17 07:35:29

注意:这似乎在iOS 11中不起作用,但在iOS 10中仍然有效。

在我看来,这是一个相当可怕的答案,部分原因是它颠覆了人机界面的指导方针,但它似乎工作得很干净:

代码语言:javascript
复制
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];

它干净地覆盖在旧的选项卡栏上,并保持其功能。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4037160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档