如何禁用所有标签栏项目?

时间:2010-03-03 23:53:06

标签: iphone

我正在使用iPhone 3.1.3 SDK开发针对带有3.1.3操作系统的iPhone 3GS。我的应用程序有一个标签栏,其中包含七个项目,其中只有两项包含有意义因此,对于其余项目,我取消选中“Tab Bar Item”属性中的“Enabled”框(第一页,“Bar Item”部分)。

对于已禁用的两个可见标签栏项目可以正常工作 - 无法单击它们。然而,当点击最右边的“更多”标签栏项时,其余三个仍然在“更多”表格中启用 - 我得到他们的(空)表格视图。在我看来,这是一个错误 - 因为这些项目没有启用,它们不应该是可点击的,即使在“更多”表格中也是如此。在调试模式下的模拟器和发布模式下的iPhone上都会发生这种情况。

那么如何禁用“更多”表格中的标签栏项目?

3 个答案:

答案 0 :(得分:6)

嗯。这几乎肯定是一个错误。我鼓励你把它归为一个;我当然会。我试图想出一个示例应用来测试这个,我确认了你所看到的行为。有趣的是,在UITabBarControllerDelegate协议中,有这种方法:

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

但是,当您从“更多”标签栏项目中选择视图控制器时,不会调用该方法。现在,我能看到这个工作的唯一方法是删除出现在“更多”视图控制器中的视图控制器,因此无法通过不存在来选择它们。

答案 1 :(得分:6)

我似乎无法获得tabBarController:shouldSelectViewController:来触发,但是这样可行:

for(UITabBarItem *item in self.tabBar.items)
    item.enabled = false;

这可能不是你想要的,但是,因为它甚至禁用了“更多”项目。

答案 2 :(得分:0)

您应该实现协议“UITabBarControllerDelegate”并将其设置为tabBarController的委托。它运作得很好!

相关问题