切换选项卡时删除所有子视图控制器并移至父视图控制器 IOS 目标 c

Posted

技术标签:

【中文标题】切换选项卡时删除所有子视图控制器并移至父视图控制器 IOS 目标 c【英文标题】:When switching tabs removing All Child View Controllers and Move to Parent View Controller IOS Objective c 【发布时间】:2017-10-31 09:17:40 【问题描述】:

我正在使用tabBarControllers。我有两个选项卡(主页和设置)。设置选项卡有多个子视图控制器。

我想要的是,当我在设置子视图控制器上并来回切换选项卡时,它将移回设置父视图控制器。

例如:我有 3 个设置视图控制器(SettingViewController1SettingViewController2SettingViewController3),当我在 SettingViewController3 上并切换选项卡(从“设置”到“主页”并从“主页”到“设置”)时,它移动到SettingViewController1(容器的父视图控制器)。

希望你能理解我的问题。谢谢

【问题讨论】:

子视图控制器是什么意思?你在使用 UINavigationController 吗? 【参考方案1】:

为您的UITabBarController 设置一个委托,并在以下方法中使用此代码:

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 
    // You can replace the UINavigationController with your Setting's Navigation Controller class.
    if ([viewController isKindOfClass:[UINavigationController class]])  
        UINavigationController *nav = (UINavigationController *)viewController;
        [nav popToRootViewControllerAnimated:NO];
    

    return YES;

【讨论】:

谢谢哥们。有效。我认为您错误地写了“控制器类”。我刚刚删除了它并粘贴了您的代码,它可以按我的意愿完美运行。再次感谢。 :) @Naqi 哦,是的,Controller class. 打错了,我修好了。【参考方案2】:

使用 Swift 4.2

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) 

        //Setup parent controller in tabbar with remove all chailed controller
        if (viewController is UINavigationController) 
            let navcontrollers = viewController as? UINavigationController
            navcontrollers?.popToRootViewController(animated: false)
        
    

【讨论】:

以上是关于切换选项卡时删除所有子视图控制器并移至父视图控制器 IOS 目标 c的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式切换选项卡时清除根视图控制器的变量

在 UITabView 中切换选项卡时,视图控制器与 IBOutlets 中的约束失去连接

切换选项卡时未调用 NSFetchedResultsControllerDelegate 方法

登录后更新TabView并移至主视图

集合视图/选项卡栏控制器崩溃

选择时将值从 TabBarController 传递给子视图控制器