iOS:Tabbar - 加载选项卡的默认状态

Posted

技术标签:

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

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

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

【问题讨论】:

【参考方案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 方法。感谢您的帮助!

以上是关于iOS:Tabbar - 加载选项卡的默认状态的主要内容,如果未能解决你的问题,请参考以下文章

选项卡栏,当来自另一个选项卡的视图控制器时弹出到根视图控制器(默认 vc)

当我在基于选项卡的应用程序中从一个控制器导航到另一个控制器时,tabBar 被隐藏

导航到 Swift tabBar 时不会刷新视图

JQuery选项卡 - 嵌套选项卡的问题 - 在初始加载时激活子选项卡

jquer选项卡的制作

如何让easyui中的tabs初始化时默认不是选中第一个选项卡而是选中我指定的选项卡??