目标C:如何禁用除一个标签栏之外的所有标签栏的用户交互?

时间:2011-08-12 08:53:21

标签: objective-c ios tabbar user-interaction

正如标题所暗示的那样,我希望能够锁定除了一个之外的所有标签栏。只有在用户完成操作后,才会启用其余所有标签栏。我怎么能这样做?

3 个答案:

答案 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方法可以提供帮助。