我正在尝试以编程方式切换标签栏项目。以下代码工作正常,但我无法在某些情况下使用它:
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);
}
像魅力一样工作!
答案 0 :(得分:1)
您在制表符切换期间切换标签页。 汉姆医生。
尝试实施UITabBarDelegate的- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
;如果没有结果,则返回NO。
或者,在-viewDidAppear:
中进行检查(它更有可能起作用)。如果这不起作用,你甚至可以使用performSelectorInBackground(但要注意 - 用户可能仍会点击其他标签!)