【问题标题】:iOS: Tabbar - load default state of tabiOS:Tabbar - 加载选项卡的默认状态
【发布时间】:2012-03-08 17:47:56
【问题描述】:

我需要一些想法或起点来解决以下问题:

我有一个以 TabBarView 开头的应用程序 - 在某些选项卡中有不同的视图/视图控制器,它们通过序列连接。 如果更改了活动选项卡,我希望(现在)打开的选项卡加载此选项卡的“开始”-视图/视图控制器,而不是最后一次在此选项卡上活动的视图/视图控制器。 我该怎么做?

【问题讨论】:

    标签: ios xcode ipad uitabbarcontroller uitabbar


    【解决方案1】:

    我建议你看看使用UITabBarDelegate方法:tabBarController:didSelectViewController:

    结合UINavigationController方法:popToRootViewControllerAnimated:

    所以当用户选择一个选项卡时,可以确保导航从根控制器开始。

    针对评论进行编辑:

    这不是一个理想的情况,但您可以在应用程序委托中引用 UITabBarController。例如:

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        // Get reference to Tab Bar Controller as the root view
        UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
    
        // Set Delegate
        tabBarController.delegate = self;
    
        return YES;
    }
    

    然后您可以实现类似于以下内容的 UITabBarDelegate 方法:

    -(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
        // Pop to root if the selected controller is a navigation controller.
        if ([viewController isKindOfClass:[UINavigationController class]]) {
            [((UINavigationController *)viewController) popToRootViewControllerAnimated:NO];
        }
    }
    

    不过我还没有测试过!

    【讨论】:

    • hm,我启动了一个 tabbarapplication,所以我没有 TabBarController 的 ViewController.m/ViewController.h...我只有 Tab1ViewController 和 Tab2ViewController 的文件 - 我可以在那里添加它吗?
    • 我已经编辑了答案以添加一些额外的代码。希望对您有所帮助。
    • 好的,我明白了:我为 TabBarController 创建了一个新的根视图控制器,并让它自行委托。现在我可以在 ne RootViewController 中调用 didSelectViewController 方法。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多