0

我有一个带有动态添加选项卡的 TabBar 控制器。添加选项卡很容易——我只需获取[self viewControllers]数组,添加一个新的视图控制器,并使用它[self setViewControllers]来更新 TabBar。现在,我希望能够按下添加的视图控制器之一中的按钮以将其从 TabBar 中删除。

我可以从self添加的视图控制器与[[self tabBarController] viewControllers]数组中比较什么,以找到要删除的匹配项?

我不能使用标签的标题,因为可能有重复。我尝试比较self这些项目,但它实际上[self parentViewController]在数组中。parentViewController当在“更多”菜单中打开视图时,我不能使用parentViewController“更多”视图控制器。我不知道有任何方法可以访问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];
4

1 回答 1

0

啊,现在我觉得有点傻。我确定我以前尝试过这个,其他答案敦促不要这样做,但是......

我可以[[self tabBarController] selectedIndex]用来获取当前选定选项卡的数组中的位置,然后删除该位置的对象。这就是我一直在寻找的——快速高效,不需要太多额外的代码。

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

嗯,最后我明白了……

于 2012-10-23T17:03:18.180 回答