我正在尝试以编程方式切换标签栏项目。以下代码工作正常,但在某些情况下我无法让它工作:
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);
}
像魅力一样工作!