我有一个动态添加标签的TabBar控制器。添加选项卡很简单 - 我只需获取[self viewControllers]
数组,添加新的View Controller,然后使用[self setViewControllers]
更新TabBar。现在,我希望能够按下其中一个添加的视图控制器中的按钮,将其从TabBar中删除。
我可以将添加的视图控制器中的self
与[[self tabBarController] viewControllers]
数组进行比较,以找到要删除的匹配项?
我不能使用Tab的标题,因为可能有重复。我尝试将self
与项目进行比较,但实际上它在数组中是[self parentViewController]
。我无法使用parentViewController
,因为在“更多”菜单中打开视图时,parentViewController
是“更多”视图控制器。我不知道如何在View的直接父级中访问信息,包括tag
。
任何提示都会很棒,并提前感谢!
举个例子,这是我目前的代码。它可以工作,但是当标签位于“更多”菜单中时却不行。当按下TabBar中视图控制器中的按钮时运行:
NSMutableArray *temp = [[NSMutableArray alloc] initWithArray:[[self tabBarController] viewControllers]];
for (int i = 0; i < [temp count]; i++)
{
UIViewController *test = [temp objectAtIndex:i];
if (test == [self parentViewController])
{
[temp removeObject:test];
break;
}
}
[[self tabBarController] setViewControllers:temp];
答案 0 :(得分:0)
我可以使用[[self tabBarController] selectedIndex]
获取当前所选标签数组中的位置,然后删除该位置的对象。这就是我想要的 - 快速而有效,无需额外的代码。
它完全按预期工作。当用户重新排序项目时,数组也被重新排序;所以当初始索引发生变化时,用户按下“关闭”按钮时的索引是数组中Controller的索引。
嗯,我最终得到了它......