Swift--getCurrentVC拿到当前控制器

Swift --棒棒糖4--判断当前的控制器是怎么来的 extension UIViewController { var isModal: Bool { let presentingIsModal = presentingViewController != nil let presentingIsNavigation = navigationController?.presentingViewController?.presentedViewController == navigationC... 阅读详情

很多应用场景会用到,话不多说…

func getCurrentVC1() -> UIViewController? {
    var result: UIViewController? = nil
    if let window = UIApplication.shared.keyWindow{
        var keyWindow = window
     
     // UIWindow.Level window三种等级 normal,alert,statusBar,可见normal才是我们真正要用到的,这段代码就是
        排除其他两种level,找到所需的normalWindow
        if window.windowLevel != UIWindow.Level.normal{
            let windows = UIApplication.shared.windows
            for tmp in windows{
                if tmp.windowLevel == UIWindow.Level.normal{
                    keyWindow = tmp
                    break
                }
            }
        }
        
        func getCurrentVC1(root:UIViewController?) -> UIViewController?{
            var currentVC:UIViewController? = nil
            var rootVC = root
            
            while rootVC?.presentationController != nil {
                rootVC = rootVC?.presentedViewController
            }
            
            if let vc = rootVC as? UITabBarController{
                //UITabBarController.selectedViewController就是rootVC,而不是那个UITabBarController本身
                currentVC = getCurrentVC1(root: vc.selectedViewController)
            }else if let vc = rootVC as? UINavigationController{
                //UINavigationController.visibleViewController才是rootVC,而不是UINavigationController本身
                currentVC = getCurrentVC1(root: vc.visibleViewController)
            }else{
                //除过上面两种VC,比如UIViewController本身就是rootVC
                currentVC = rootVC
            }
            
            return currentVC
        }
        
        result = getCurrentVC1(root: keyWindow.rootViewController)
    }
    
    return result
}




//实际项目中调用
if let myVC = getCurrentVC1() as? myVC {
.......
}

看似简单,完全明白还需要自己动手亲自写一写,体会这里面的思维逻辑,感受这样的设计理念,由小到大你也就会慢慢成长!

详解iOS开发获取当前控制器的正取方式 背景 在开发过程中,经常需要获取当前 window, rootViewController, 以及当前 ViewController 的需求. 如果 .m 实现不是在当前视图情况下, 我们需要快速的获取到当前控制器, 这种情况就需要先做好一层封装,我一般是通过 UIViewController 写的一个 Category 来实现, 实现起来也非常简单, 只需要我们对 控制器几个方法掌握便可。 获取根控制器 + (UIViewController *)jsd_getRootViewController{ UIWindow* window = [[[UIApplication shared 立即下载

相关推荐

3 种 VLA 模型动作表示方案对比:RT-2 离散化 vs π0 流匹配 vs HybridVLA 混合架构

本文深入对比了三种VLA模型动作表示方案:RT-2离散化、π0流匹配和HybridVLA混合架构。分析了各自的技术原理、优势与局限性,并提供了应用场景选择指南,帮助研究者在具身智能领域做出更优的技术选型决策。

weixin_29031161的博客 319

iOS Swift获取当前显示的ViewController

class public func getCurrentVc() -> UIViewController{    let rootVc = UIApplication.shared.keyWindow?.rootViewController    let currentVc =getCurrentVcFrom(rootVc!

Lee坚武的博客 1804

Robot Arm 机械臂源码解析

由于我们用的是步进电机,运动的时候是一步一步的,并不是平滑的,这里假设在一个平面上面,一个x步进电机,一个y步进电机。那么放大它们所走的轨迹就会是阶梯状的。而它们也只能沿着网格运动。相当于有了一个最小的分辨率,这个分辨率就是一步。如下图所示,如果x,y电机同时走就能走出45度的斜线。在三维空间里面运动也是如此,你应该可以想象的出来;首先,是updateActualPosition,用来时时更新此时的差补位置,得到的是一个路径与时间t的函数(其中路径的范围为0,1,时间范围为0,dist/v)...

爱吃炸鸡的小猪's blog 1万+

获取当前页面的最层控制器 (Swift 4)

第一种模式--->符合UITabBarController --->UINavigationController布局 //MARK: 获取当前页面的最顶层控制器 <此方法在ios13 later 会出问题,废弃> func getCurrentVCBS() -> UIViewController { let keywindow = (UIApp...

FlyingFireFish的博客 3737

激光器安规详细解读 - 一级 - 并以940波长为例

前言: 作为人工智能的重要解决方案,激光作为不可或缺的一个选项。但是,激光的安规问题始终是要得到关注。尤其是3D识别技术在人脸上的使用的时候,如何判读激光器的安全使用规范,变得非常重要。本文,尝试从欧洲激光标准IEC 60825-1:2014,以及国家激光产品规则标准GB 7247.1,抛砖引玉,写出自己的理解。 本节,主要讨论,人脸识别需要符合的安全等级1: 1 激光标准的分类 激光国际...

山云的专栏 5036

OpenCV计算机视觉实战(11)——边缘检测详解

在本节中,我们系统介绍了三大经典边缘检测算子,包括 Sobel 算子:一阶导数平衡了噪声抑制与边缘提取,结合方向信息可用于纹理分析与车道检测;Laplacian 算子:二阶导数对微小亮度突变尤为敏感,配合零交叉和细化技术,可精确捕捉任意方向的细节边缘;Canny 算法:集成多阶段处理与双阈值策略,通过多尺度融合与自适应阈值优化,达到抗噪与细节兼顾的卓越效果。

qq_30167691的博客 4375

swift获取当前展示Controller

【代码】swift获取当前展示Controller。

Cheung1992的博客 717

[CSP-X2025山东小学组T4]勇者斗恶龙

[CSP-X2025山东小学组T4]勇者斗恶龙,动态规划

少儿编程乔老师 150

swift 获取控制器

///获取当前控制器 func currentVc() -&amp;gt;UIViewController{ var vc = UIApplication.shared.keyWindow?.rootViewController if (vc?.isKind(of: UITabBarController.self))! { vc = (vc as! UITabBarC...

星宇大前端 2398

微信开发 - 最新第三方网站接入微信登录、微信支付时,本地 redirect_uri 参数错误导致无法调试的解决方案(微信开放平台)完美解决每次都需要部署到线上测试,在本地使用本地 ip 就能轻松调试

redirect_uri参数错误,微信第三方登录,没有服务器时的测试方法,微信开放平台的回调域名怎么设置为本地域名IP,微信登录微信支付每次调试都需要放到服务器上怎么办,微信登录支付业务在本地调试不了怎么办,在本地怎么测试微信支付和登录,微信第三方登陆本地测试,怎么在本地进行测试,微信回调域怎么设置为本地IP,微信扫码登录redirect_uri参数错误,微信开放平台,微信开放平台开发的第三方登录和支付,vue2,nuxt2,vue3,nuxt3,uniapp,微信开放平台,公众号,微信支付,微信登录授权,

🏆 前端领域优质创作者 8791

垂类大模型 研发方向与具体方案调研

领域知识库加上通用大模型,针对通用大模型见过的知识比较少的问题,利用向量数据库等方式根据问题在领域知识库中找到相关内容,再利用通用大模型强大的summarization和qa的能力生成回复,完成本次垂直大模型研发。目前很多企业希望将大模型的能力应用到企业内部当中,但很多通用大模型只是一个预训练模型,其所能回答的知识主要来源于互联网上公开的通用知识库,对于部分垂直领域和企业内部的私有知识库的问答,给出的回答。:垂类大模型的效果与底座性能息息相关,研发垂类大模型第一步就是确定开源大模型解决方案。

风吹落叶的博客 3329

iOS基础(五)——获取当前控制器和获取当前UI控制器

1、获取当前控制器 -(UIViewController *)getCurrentVC{ UIViewController *result = nil; UIWindow * window = [[UIApplication sharedApplication] keyWindow]; if (window.windowLevel != UIW...

dddt2007的博客 270

实战交易策略 篇二十二:情绪流龙头交易策略

在股票市场中,机构主导趋势,游资驱动热点,散户易被情绪裹挟,形成“金字塔”式生态链,并存在情绪传递、强者恒强、物极必反的规律特点。股市是资金驱动的情绪博弈场,价格波动由群体心理、资金博弈和预期差共同驱动,核心是资本逐利性与人性贪婪恐惧的交织,兼具资源配置、财富再分配与风险定价功能。涨停加速与逃逸缺口(主升强化)凹字板/平台突破(趋势延续)天量弱转强(分歧买点)不参与首波(二波策略)情绪周期(道术合一)主线思维(聚焦核心)开盘抢筹(竞价博弈)一字助攻(情绪强化)分批进出(滚动操作)

生活在别处 1487

获取当前控制器

在做项目时,有时候,会写一个工具类来对项目进行操作: 这个时候如果需要使用当前控制器去进行一些操作,比如想去present一个alertController, 这时候就需要获取到当前控制器了,下面就是获取的方法:根据每个App都是一个单例来获取当前窗口的根控制器,从而获取到所有的控制器,找到 + (UIViewController *)getCurrentVC { UIWindow

于海明的博客 483

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

解决为什么有很多朋友要显示当前viewController,却无法拿到这个view的疑问

- (UIViewController *)getCurrentVC { UIViewController *result = nil; UIWindow * window = [[UIApplication sharedApplication] keyWindow]; if (window.windowLevel != UIWindowLevelNor...

weixin_34149796的博客 137

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

获取当前AppDelegate 正在显示的UIViewController

UIWindow+PazLabs.h (header file) #import &lt;UIKit/UIKit.h&gt; @interface UIWindow (PazLabs) - (UIViewController *) visibleViewController; @end UIWindow+PazLabs.m (implementation file) ...

weixin_34101784的博客 241

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

iOS获取当前window的控制器

Swift 获取当前屏幕显示的控制器 这篇文章你将学到repeat…while循环 如果满足while条件会一直循环,直到不满足while条件 /// 获取当前屏幕显示的viewcontroller static func ex_presentController() -> UIViewController? { var result: UIViewController? = nil var rootVC: UIViewController? = nil

MOON_YZM的博客 1915

Swift 获取当前视图所在导航控制器(个人笔记防遗忘)

///获取当前视图所在导航控制器 func currentNavViewController() -> UINavigationController? { var n = next while n != nil { if n is UINavigationController { ret...

IN 2120

iOS/swift之view获取当前的控制器

let vc=self.getControllerfromview(view: self) print("------\(vc)") func getControllerfromview(view:UIView)-&gt;UIViewController?{ var nextResponder: UIResponder? = self repeat { ...

代码解释生活 2425

swift 获取当前viewcontroller (rootVC)

xcode 报错 whose view is not in the window hierarchy! 也就是你现在的Present的视图并不是Windows视图 ///获取当前控制器 func currentVc() ->UIViewController{ var vc = UIApplication.shared.keyWindow?.rootViewController if (vc...

Ideainnet 2499

getCurrentVC

iOS oc获得当前view的方法 - (UIViewController *)getCurrentVC { //获取当前的UIViewController UIViewController*rootViewController = [UIApplication sharedApplication].keyWindow.rootViewController; UIViewController *currentVC = [self getCurrentVCFrom:root

缄默的博客 629

Swift - 获取当前的ViewController

为什么80%的码农都做不了架构师?>>> ...

weixin_34067049的博客 1381

swift3.0通过响应链获取当前试图的控制器

func parentViewController() -> UIViewController? { let n = next while n != nil { let controller = next?.next if (controller is UIViewController) { return controller as? U

lausen34的博客 2005

[Swift]获取最顶层视图控制器

/// 验证 func verificationAction(code:Int) { guard let topVC = ScreenUIManager.topViewController() else { return } let vc = AppSafeVerificationVC() vc.reCode = code vc.modalPresentationStyle = .overCurrentContext vc.moda.

Gamin 2902
上一篇: Swift--UIButton的titleRect,imageRect方法
下一篇: Swift--递归是什么
SoftwareDoger
博客等级 码龄10年 8粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值