首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

双击UITabBarController时防止自动popToRootViewController

双击 UITabBarController 时防止自动 popToRootViewController 的方法如下:

  1. 在 UITabBarController 中监听双击事件。
  2. 在监听方法中,获取当前选中的 UINavigationController。
  3. 判断当前 UINavigationController 的 viewControllers 数组中是否有需要的 UIViewController。
  4. 如果有需要的 UIViewController,则将当前 UINavigationController 的 viewControllers 数组中的所有 UIViewController 弹出,直到找到需要的 UIViewController。
  5. 如果没有需要的 UIViewController,则不进行任何操作。

下面是示例代码:

代码语言:swift
复制
class CustomTabBarController: UITabBarController {
    override func viewDidLoad() {
        super.viewDidLoad()
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap))
        tapGestureRecognizer.numberOfTapsRequired = 2
        view.addGestureRecognizer(tapGestureRecognizer)
    }
    
    @objc func handleTap(sender: UITapGestureRecognizer) {
        guard let selectedViewController = selectedViewController else { return }
        guard let navigationController = selectedViewController as? UINavigationController else { return }
        guard let viewControllers = navigationController.viewControllers else { return }
        
        let targetViewController = viewControllers.first(where: { $0 is YourTargetViewController })
        
        if let targetViewController = targetViewController {
            navigationController.popToViewController(targetViewController, animated: true)
        }
    }
}

这个代码示例中,需要将 YourTargetViewController 替换为实际需要的 UIViewController 类名。

这个方法可以防止双击 UITabBarController 时自动回到根视图控制器,并且可以在需要的时候回到指定的视图控制器。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

大前端开发中的路由管理之四:iOS篇

ViewController: 一类用来展示内容,例如UIViewController,UITableViewController 一类用来作为容器,例如UINavigationController,UITabBarController...ViewController都是通过持有一个ViewController的数组来管理,一般来讲UINavigationController是通过先进后出(First In Last Out)的方式来管理,而UITabBarController...通过解析源码的方法,发现UINavigationController不仅有简单的pushViewController和popViewController,还有popToViewController以及popToRootViewController...但ViewController自己不会自动保存其他的状态。         ...3.5 多页面的内存管理         每个UIViewController的类都会有自动的内存管理,通过didReceiveMemoryWarning这个方法来释放不需要的内存,进而管理low-memory

1.9K40
  • Cocoa编程中视图控制器与视图类详解

    导航控制器自动构建并处理Back按钮; 3. 导航控制器提供简单的菜单栏可帮助用户进行自定义控件。4....作为弹出回上一级视图控制器的Back按钮是自动产生并处理的,无需用户干预。 3. 可使用popViewControllerAnimated:BOOL弹出当前视图控制器并向左显示前一个视图。 4....C代码   // 创建一个UITabBarController对象 UITabBarController *tabBarController = [[UITabBarController alloc]...• –viewDidLoad:当加载控制器的视图到内存,该方法被调用。...事件处理 如图所示,一般情况下,当一个视图不响应用户事件,它会将事件传递给它的父视图。但是,当视图被视图控制器管理,它会将事件首先传递给视图控制器。

    5K50

    Xcode16新特性与iOS18适配指南

    项目 各类 Components 下载支持断点续传。 增加了Predictive Code Completion Model的 Other Components,该模型主要用于代码预测功能。...UITabBarController 增加了一种新的标签类型UITab,可以设置title(标题)、subtitle(副标题)、image(图片)、badgeValue(角标值)等。...UITabBarController 增加了一个类型为 UITabBarController.Mode 的mode属性,用于设置显示效果,共有 3 种取值,分别为automatic、tabBar与tabSidebar...,其中最后一种在 iPadOS 显示,可以在 siderBar 与 tabBar 之间进行切换。...系统能够自动监听并且处理特征值的改变,不再需要UITraitChangeObservable协议中的特征变化注册方法registerForTraitChanges()。

    2.5K11

    iOS小技能:设置状态栏背景颜色(图片)

    通过上面的代码获取statusBar,发现每次每次获取都调用 alloc:init的方法,重新生成一个statusBar;然后添加到UIApplication的keyWindow上,再设置背景颜色。...make.top.equalTo.offset(kAdjustRatio(44)); }]; } return _imgLable; } 推荐使用自动布局...self.navigationController.navigationBar.frame.size.height; NSLog(@"导航栏高度:%f",navHeight); //获取tabBar的高度 //1.在tabBarController中使用(你的继承自UITabBarController...tabBarHeight = self.tabBar.frame.size.height; NSLog(@"tabBar高度:%f",tabBarHeight); //2.在非tabBarController中使用 UITabBarController...*tabBarVC = [[UITabBarController alloc] init];//(这儿取你当前tabBarVC的实例) CGFloat tabBarHeight = tabBarVC.tabBar.frame.size.height

    1.9K40

    iOS开发中标签控制器的使用——UITabBarController

    iOS开发中标签控制器的使用——UITabBarController 一、引言         与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是...二、创建一个标签控制器         通过如下的步骤,我们可以很简便的创建一个TabBarController: UITabBarController * tabBar= [[UITabBarController...三、UITabBarController的属性和方法 //管理的viewController数组 @property(nullable, nonatomic,copy) NSArray<__kindof...//枚举如下 typedef NS_ENUM(NSInteger, UITabBarItemPositioning) {     UITabBarItemPositioningAutomatic,//自动...:(UITabBar *)tabBar didBeginCustomizingItems:(NSArray *)items;            //将要进入编辑状态

    1.5K20

    实践-小细节Ⅶ

    UIApplicationOpenSettingsURLString] options:@{} completionHandler:nil]; } } 4.如何实现扫描一次蒲公英安装二维码后,内测版APP自动提示更新...iOS内测版实现自动检查更新 Android内测版实现自动检查更新 如果有更新版本则会提示用户前往更新,如图所示: image 注:因操作系统限制,iOS 11及之后版本,当用户点击安装新版本后,会跳转到蒲公英应用单页...暂时消失"); }else { NSLog(@" 出栈了"); } } 6.程序之间的相互调用 在我们的iOS开发中,我们常常会遇见在程序中打开第三方应用的功能,比如美团付款打开支付宝...判断某一个对象是什么类 UIWindow *window = [[[UIApplication sharedApplication]delegate]window]; if ([vc isKindOfClass:[UITabBarController...UINavigationController alloc]initWithRootViewController:vc]; } 这里很容易错误的写法是: [vc.class isKindOfClass:[UITabBarController

    84420

    iOS项目——基本框架搭建

    的顺序保持一致 当添加的barItem个数 <= 5个,均匀分布在最下面的bar条上,如上图所示的4个 当添加的barItem个数 > 5个,会只显示前四个添加的barItem,然后加上一个【more...setViewControllers: 示例代码如下,自定义一个TabBarController继承自UITabBarController,然后重写其 viewDidLoad 方法添加子视图和标签:...]; [self addChildViewController:vc]; } @end 三 UITabBarItem设置    在iOS开发过程中,系统自带的空间有时候会将有些图片显示出来时自动渲染成蓝色...,例如自带的TabBarItem在选中的图片,还有设置UIButtonTypeSystem样式按钮的图片,这时候系统都会自动渲染成蓝色。...再次产生一张不会进行渲染的图片 // 加载图片 UIImage *tempImage = [UIImage imageNamed:@"tabBar_essence_click_icon"]; // 产生一张不会进行自动渲染的图片

    1.8K80

    iOS 本地推送概念步骤:属性:点击通知跳到指定控制器界面快捷回复功能(iOS 8以后可用), category 属性的使用方法

    带一个索引2的参数,点击通知打开程序后自动跳到第三个控制器(TabBarController) localNotifi.userInfo = @{@"selectIndex" : @(2)}; 13、设置分类...(相当于自动点击了通知),这时候我们需要对程序的状态进行判断,如果在前台接收到通知不进行任何操作或提示用户是否进行跳转 UIApplication 单例的一个方法可以查看程序当前的状态 @property...NSString *selectIndex = localNotifi.userInfo[@"selectIndex"]; // 获取根控制器TabBarController UITabBarController...*rootController = (UITabBarController *)self.window.rootViewController; // 跳转到指定控制器 rootController.selectedIndex...QQ自动回复效果图 案例的效果: ? 案例效果 设置快捷回复之后锁屏左滑会出现如下样式 ?

    2.5K60

    (ps全版本)Photoshop 2020的安装与破解教程(mac+windows全版本都有)

    DFGhkjDRTFyguhiYUTRTyRYTUiiuyruIUHgf安装教程:01卸载你电脑上所有非2020版本的Adobe软件可能是兼容性的问题,如果你的电脑上安装了不同年代版本的Adobe软件,安装2020会出现安装失败的问题具体步骤...别人说电脑里如果已经安装了它,就可以跳过这些步骤直接安装PS,但为了防止出现版本问题各种报错,还是推荐全部卸载干净重新双击安装哈~双击这个安装:双击后你就可以看到这个界面啦:虽然有4种登录方式,但下面三个在国内根本登不上哦...登录好它就自动开始安装啦!安装好之后可能会自动弹出这个窗口或者其他乱七八糟的窗口,直接右上角X掉无视就行。03安装Photoshop2020安装好前者后,就可以开始安装PS本体啦!...双击前面的文件夹,选择set-up打开就可以安装了:▼【双击】打开那个文件后,就可以看到这个窗口了:位置这一栏,一!定!不!要!选择默认位置!...然后它就自动开始安装了:04安装成功,创建快捷方式很多人会发现,安装成功后,桌面上是找不到PS的。

    1.7K10

    Golang语言情怀--第111期 全栈小游戏开发:第2节:场景制作-场景资源

    在 Cocos Creator 中,游戏场景(Scene)是游戏开发组织游戏内容的中心,也是呈现给玩家所有游戏内容的载体。...切换场景 在 资源管理器 中,通过双击场景文件打开场景。 如果需要在游戏过程中切换场景,可通过 director.loadScene 等 API 来实现游戏中动态场景加载及切换。...场景属性 双击打开场景文件后,可以看到 层级管理器 中的 scene 是场景节点树的根节点。...双击打开场景文件后,在 层级管理器 选中 scene 节点,即可在 属性检查器 中设置场景是否自动释放: 从当前场景切换到下一个场景,如果当前场景不自动释放资源,则该场景中直接或间接引用到的所有资源(...防止特定资源被自动释放 启用了某个场景的资源自动释放后,如果在脚本中保存了对该场景的资源的“特殊引用”,则当场景切换后,由于资源已经被释放,这些引用可能会变成非法的,有可能引起渲染异常等问题。

    22920
    领券