如何从Controller内部关闭TabBar控制器?

时间:2012-10-23 16:29:04

标签: ios uiviewcontroller uitabbarcontroller

我有一个动态添加标签的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];

1 个答案:

答案 0 :(得分:0)

啊,现在我觉得有点傻。我确信我以前曾经尝试过这个,其他答案也是不要这么做,但是......

我可以使用[[self tabBarController] selectedIndex]获取当前所选标签数组中的位置,然后删除该位置的对象。这就是我想要的 - 快速而有效,无需额外的代码。

它完全按预期工作。当用户重新排序项目时,数组也被重新排序;所以当初始索引发生变化时,用户按下“关闭”按钮时的索引是数组中Controller的索引。

嗯,我最终得到了它......

相关问题