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

Kar*_*ilz 2 iphone

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

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

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

Jef*_*ley 6

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

- (BOOL)tabBarController:(UITabBarController *)tabBarController 
shouldSelectViewController:(UIViewController *)viewController
Run Code Online (Sandbox Code Playgroud)

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


kak*_*aka 6

我似乎无法获得tabBarController:shouldSelectViewController:来触发,但这有效:

for(UITabBarItem *item in self.tabBar.items)
    item.enabled = false;
Run Code Online (Sandbox Code Playgroud)

但这可能不是你想要的,因为它甚至会禁用"更多"项.