Iphone 如何禁用所有选项卡栏项目?

Iphone 如何禁用所有选项卡栏项目?,iphone,Iphone,我正在用iPhone3.1.3SDK开发一款带有3.1.3操作系统的iPhone3GS。我的应用程序有一个标签栏,有七个项目,其中只有两个包含有意义的内容。因此,对于其余的项目,我取消选中了“Tab Bar Item”属性(第一页,“Bar Item”部分)中的“Enabled”框 这对两个禁用的可见选项卡栏项很好——无法单击它们。但是,当单击最右侧的“更多”选项卡栏项时,其余三个仍然在“更多”表中启用-我得到了它们的(空)表视图。在我看来,这是一个bug——因为这些项目没有启用,所以它们不应该

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

这对两个禁用的可见选项卡栏项很好——无法单击它们。但是,当单击最右侧的“更多”选项卡栏项时,其余三个仍然在“更多”表中启用-我得到了它们的(空)表视图。在我看来,这是一个bug——因为这些项目没有启用,所以它们不应该是可点击的,即使在“更多”表中也是如此。这在调试模式下的模拟器和发布模式下的iPhone上都会发生


那么如何禁用“更多”表中的选项卡栏项目呢?

嗯。这几乎肯定是一个bug。我鼓励你把它作为一个文件归档;我当然会的。我试着开发一个示例应用程序来测试这一点,我确认了您看到的行为。有趣的是,在
UITabBarControllerDelegate
协议中,有以下方法:

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

但是,当您从“更多”选项卡栏项中选择视图控制器时,不会调用该方法。就目前而言,我能看到这种工作的唯一方式是,如果您删除将出现在“更多”视图控制器中的视图控制器,因此由于它们不存在而无法选择。

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

我似乎无法让tabBarController:shouldSelectViewController:触发,但这可以:

for(UITabBarItem *item in self.tabBar.items)
    item.enabled = false;
但这可能不是您想要的,因为它甚至会禁用“更多”项