iPhoneDev,UITabBarController SelectedIndex问题

时间:2010-08-06 17:04:18

标签: iphone uitabbarcontroller selectedindex

我正在尝试以编程方式切换标签栏项目。以下代码工作正常,但我无法在某些情况下使用它:

self.tabBarController.selectedIndex = 0;

问题在于:

我有一个带有两个UIViewController类的标签栏控制器。在第二个选项卡中,我将上面的代码放在viewWillAppear方法中的if语句中。上面的代码本身可以工作,但只有在从未加载过视图时才有效。所以,在第一个标签上我有一个按钮。按下该按钮后,我以编程方式切换到第二个选项卡。那时我的代码工作,我基本上停留在第一个选项卡上。但是第一次之后切换不起作用。如果在按下该按钮之前选择第二个选项卡,它也不起作用。触发我的代码所在的IF语句,但所选的选项卡不会更改。

任何帮助将不胜感激。如果您需要,请随时要求澄清。

谢谢!


让我添加更多信息:

(1)这仅用于罕见的场合。第一个屏幕是搜索屏幕。按下搜索后,您将自动进入第二个选项卡,除非没有结果,然后您会收到警报并留在那里。

(2)第二个选项卡维护所有项目的列表,如果没有执行缩小搜索,或者缩小项目列表。无论哪种方式,该列表始终可用。因此即使我在搜索页面上停止它们,如果他们忘记并单击其他选项卡,他们将被告知没有项目。在这一点上,我想把它们带回第一个标签,仅作为一种便利。

这不是什么大不了的事,我可以没有它,并不是有些正在制定的可怕的编程方案。我只想添加一个用户便利项......


感谢tc!我在UITabBarControllerDelegate中使用了以下方法:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{

if(self.tabBarController.selectedIndex == 0){
    if([books count] == 0){

        [self alertNoResults];

        return(FALSE);
    }
}
return(TRUE);
}

像魅力一样工作!

1 个答案:

答案 0 :(得分:1)

您在制表符切换期间切换标签页。 汉姆医生。

尝试实施UITabBarDelegate的- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;如果没有结果,则返回NO。

或者,在-viewDidAppear:中进行检查(它更有可能起作用)。如果这不起作用,你甚至可以使用performSelectorInBackground(但要注意 - 用户可能仍会点击其他标签!)