Iphone 移除AbbarItem

Iphone 移除AbbarItem,iphone,uitabbar,uitabbaritem,iphone-sdk-4.1,Iphone,Uitabbar,Uitabbaritem,Iphone Sdk 4.1,如何从UITabBar中删除uitabaritem 我没有尝试过任何东西,因为我没有从谷歌搜索或UITabBar、UITabBarController或UITabBarItem的文档中找到任何东西 提前感谢!:) 有一个项目集合。由于items属性是一个NSArray而不是一个,因此必须从没有要删除的对象的现有NSArray构造一个新的NSArray,然后将items属性设置为新数组 /* suppose we have a UITabBar *myBar, and an int index i

如何从
UITabBar
中删除
uitabaritem


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

提前感谢!:)

有一个项目集合。由于items属性是一个NSArray而不是一个,因此必须从没有要删除的对象的现有NSArray构造一个新的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];
Mike Caron的建议,如果您打算修改属于控制器的选项卡栏

在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];

它在旧的选项卡栏上清晰地分层,并保持其功能。

Hi@esqew,您已经尝试过什么?我没有尝试过任何东西,因为我没有从谷歌搜索或
UITabBar
UITabBarController
,或
uitabaritem
的文档中找到任何东西。记住,
-[NSArray mutableCopy]
是你的朋友。另外,不要忽略
-[UITabBar setItems:animated:
。在iOS 11中,self.tabBarItem=nil只会使等待点变空,实际上它不会洗牌项目以填充“已删除”的项目:(有一个仍然有效的答案-从tabbarcontroller viewcontroller列表中删除viewcontroller。