HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在基于故事板的应用程序中禁用/启用UITabBarController中的选项卡大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我用故事板构建了我的应用程序,所有视图都由tabbarcontroller管理.

所以在发布时(我目前只在iPad UI上工作)它会这样做:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if ([[UIDevice currentDevice] userInterfaceI@L_129_0@m] == UIUserInterfaceI@L_129_0@mPad)
    {
        UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
        UISplitViewController *splitViewController = [tabBarController.viewControllers objectATindex:0];
        UINavigationController *navigationController = [splitViewController.viewControllers lastObject];
        splitViewController.delegate = (id)navigationController.topViewController;

        UINavigationController *masterNavigationController = [splitViewController.viewControllers objectATindex:0];
        ProductionMasterViewController *controller = (ProductionMasterViewController *)masterNavigationController.topViewController;
        controller.managedObjectContext = self.managedObjectContext;
    }
}

我希望能够根据用户输入启用或禁用tabBarController中的选项卡(例如,需要在第一个选项卡中选择一个项目才能访问第二个和第三个选项卡,认情况下禁用这些选项卡)

我不清楚的是如何访问选项卡以启用/解除它们.我会创建appdelegate的实例,然后执行类似的操作

AppDelegate *d = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UITabBarController *tabs = (UITabBarController *)[d.window rootViewController];
[[[[tabs tabBar] items] objectATindex:2] setEnabled:YES];
[[[[tabs tabBar] items] objectATindex:3] setEnabled:YES];
[[[[tabs tabBar] items] objectATindex:4] setEnabled:YES];

(这似乎应该有用,但看起来也相当粗糙.)

解决方法

由于您使用的是基于Storyboard的应用程序,我假设您在故事板中定义了UITabBarController作为根控制器.顺便提一下,您也可以通过标识符检索它,而不是从窗口走到根视图控制器.

通过设置UITabBarController的委托(即符合UITabBarControllerDelegate的委托)来限制可选择哪些选项卡.

在委托中,您可以实现以下两种方法

– tabBarController:shouldSELEctViewController:

– tabBarController:didSELEctViewController:

可能,您只需要第一个限制(禁止)选择,直到您的工作流程准备就绪.

另一种方法是在每次里程碑传递时在标签栏控制器上设置“viewControllers”属性.在每个里程碑,您将一个更广泛的视图控制器数组设置到此属性中,这将打开选择的附加标签项.

SWIFT 3

(为便于理解而扩展)

let arrayOfTabBarItems = tabBarController?.tabBar.items

        if let barItems = arrayOfTabBarItems,barItems.count > 0 {
            os_log("barItems.count is Now ",barItems.count)
            tabBarItem0 = barItems[0]
            tabBarItem0.isEnabled = true
            tabBarItem1 = barItems[1]
            tabBarItem1.isEnabled = true
            tabBarItem2 = barItems[2]
            tabBarItem2.isEnabled = true
            tabBarItem3 = barItems[3]
            tabBarItem3.isEnabled = true
            tabBarItem4 = barItems[4]
            tabBarItem4.isEnabled = true
        }

这可以在每个选项卡控制器上的viewWillAppear中使用.检查您的规则并相应地限制每个选项卡.
(更简洁的方法)

let arrayOfallTabBarItems = tabBarController?.viewControllers
    if   let tabBarArray = arrayOfallTabBarItems,tabBarArray.count > 0 {
        for x in 0...tabBarArray.count-1 {
            let tabBarItem = tabBarArraY[x]
            if tabBarItem.title != nil {
                if tabBarItem.title == "Tab1" || tabBarItem.title == "myTab" || tabBarItem.title == "Tab2check" {
                    tabBarItem.tabBarItem.isEnabled = !(isMyRuleTrue!)
                }
            }
        }
    }

大佬总结

以上是大佬教程为你收集整理的ios – 在基于故事板的应用程序中禁用/启用UITabBarController中的选项卡全部内容,希望文章能够帮你解决ios – 在基于故事板的应用程序中禁用/启用UITabBarController中的选项卡所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。