正如标题所暗示的那样,我希望能够锁定除了一个之外的所有标签栏。只有在用户完成操作后,才会启用其余所有标签栏。我怎么能这样做?
答案 0 :(得分:15)
我没有尝试过,但根据docs,您可以从tabBarController:shouldSelectViewController:
代表处返回NO。
[更新]我只是出于好奇而尝试了 - 似乎工作正常。从“选项卡栏应用程序”模板创建一个新项目,然后转到FirstViewController的-viewDidLoad
。添加以下行:
[self.tabBarController setDelegate:self];
然后实现委托方法:
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
if (userHasCompletedAction) {
return YES;
}
return NO;
}
不要忘记在.h文件中符合<UITabBarControllerDelegate>
!
希望有所帮助。
答案 1 :(得分:4)
您必须实施此方法
- (void)tabBarController:(UITabBarController *)tabBarController1 didSelectViewController:(UIViewController *)viewController {
if ([tabBarController1 selectedIndex]==0) {
UITabBarItem *tabBarItem = [[[[self tabBarController]tabBar]items] objectAtIndex:1];
[tabBarItem setEnabled:FALSE];
}
}
您必须执行以下操作才能禁用所需的标签栏项目。
答案 2 :(得分:0)
tabBar:didSelectItem:
中的UITabBarDelegate
方法可以提供帮助。