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。