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

如何检查当前viewController或根viewController?

在iOS开发中,可以通过以下方法来检查当前的viewController或根viewController:

  1. 检查当前viewController: 可以使用以下代码来检查当前显示的viewController:
代码语言:txt
复制
if let viewController = UIApplication.shared.keyWindow?.rootViewController {
    // 当前显示的viewController
    print(viewController)
}

这段代码会获取应用的keyWindow,并从keyWindow的rootViewController开始遍历,找到当前显示的viewController。

  1. 检查根viewController: 可以使用以下代码来检查应用的根viewController:
代码语言:txt
复制
if let rootViewController = UIApplication.shared.keyWindow?.rootViewController {
    // 应用的根viewController
    print(rootViewController)
}

这段代码会获取应用的keyWindow,并直接获取其rootViewController,即应用的根viewController。

这种方法适用于大多数情况下,但在某些特殊情况下,可能需要根据应用的结构和使用的框架进行适当的调整。

以上是检查当前viewController或根viewController的方法,可以根据具体的需求进行使用。

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

相关·内容

iOS学习——获取当前最顶层的ViewController

在iOS开发过程中,我们经常性会需要获取当前页面的ViewController,然后利用ViewController进行一些操作,例如在最顶层的ViewController上展示一个UIAlertController...,或者在最顶层的ViewController上present另一个ViewController,或者进行其他操作。...在寻找的过程中,要分别考虑当前ViewController是UITabBarController和UINavigationController的情况,同时还要考虑到当前ViewController是否通过...presentedViewController]; } if ([rootVC isKindOfClass:[UITabBarController class]]) { // 视图为...作为导航结构,以及可能present出新的VC,其实如果用storyboard的方式写UI的话就很清晰,类似树的结构,再利用递归找到当前视图。

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

    由Model来定义 View上展示的逻辑,由Controller来控制 Controller同样负责初始化Model,和传递Model的信息给View         用户在View层中所进行的创建修改数据的操作...,通过Controller对象传达出去,最终会创建更新Model。...而点击应用上方的NavigationBar返回按钮(如果没有隐藏起来的话)就会pop当前ViewController,也就是返回上一层。...应用默认的UINavigationController的第一个view controller是视图控制器,即 root view controller,放在stack的最底层,最新的在最高层。...----         至此,我们了解到了iOS端是如何去实现路由管理的,那么,就请期待我们下一篇文章《大前端开发中的路由管理之五:Flutter篇》吧,下篇文章将为大家揭秘Flutter是如何去做路由管理的

    1.9K40

    UI篇-VC的生命周期以及UIView的layoutSubviews和drawRect方法

    一个很常见的问题,我们需要在VC被销毁的时候处理一些事情,可是 viewWillDisappear 不管是入栈新的视图还是出栈当前视图都会被调用,无法判断,结合我之前说的原理,我们可以利用下面这个方法判断当前...但是在VC中,当前UIView的是在 viewDidLoad 执行后才初始化好的,所以我们会见到这样一个Bug,在VC初始化语句后面调用 一个 VC的绘制UI的方法,你会发现根本没有效果,这就是因为,VC...中跟试图的初始化是需要时间的,你在VC试图初始化之前调用绘制UI的方法当然是不会有效果出现的。...那么将在每次设置更改frame的时候自动调用drawRect:。...**drawRect:方法不能手动显示调用,必须通过调用setNeedsDisplay 者 setNeedsDisplayInRect,让系统自动调该方法。强行调用也不会起作用的。

    1.9K30

    iOS 开发:『Runtime』详解(一)基础知识

    只有在运行时间才检查变量的数据类型,同时在运行时才会根据函数名查找要调用的具体函数。这样在程序没运行的时候,我们并不知道调用一个方法具体会发生什么。...Runtime 实际上是一个库,这个库使我们可以在程序运行时动态的创建对象、检查对象,修改类和对象的方法。 ---- 2....父类对象的元类 的 父类指针指向了 类对象的元类,也就是 元类。而 元类 的 父亲指针 指向了 类对象,最终指向了 nil。...用到的方法: // 重定向方法的消息接收者,返回一个类实例对象 - (id)forwardingTargetForSelector:(SEL)aSelector; 注意:这里+resolveInstanceMethod...但是我们通过 forwardingTargetForSelector 把当前 ViewController 的方法转发给了 Person 对象去执行了。打印结果也证明我们成功实现了转发。

    1.3K40

    iOS右滑返回的实现(interactivePopGestureRecognizer)

    NO; } } //这里就是非右滑手势调用的方法啦,统一允许激活 return YES; } II、QMUI导致右滑返回没有生效的解决方法 先来看看QMUI如何实现实现右滑返回...- (BOOL)shouldForceEnableInteractivePopGestureRecognizer { UIViewController *viewController = [self...当 interactivePopGestureRecognizer.enabled = NO 或者当前UINavigationController堆栈的viewControllers小于2的时候此方法无效...自定义了leftBarButtonItem按钮 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)...:animated]; } 2.2 解决方法 所以当你自定义导航栏(自定义了leftBarButtonItem按钮)没采用系统的默认的实现,发生当前不可以手势返回,可先检查为什么当前状态,系统不允许你的手势返回

    3.2K20

    iOS学习——内存泄漏检查及原因分析

    通俗理解就是内存不够,通常在运行大型软件游戏时,软件游戏所需要的内存远远超出了你主机内安装的内存所承受大小,就叫内存溢出。...选择Leaks选项,点击右下角的【choose】按钮,这时候项目程序也在模拟器手机上运行起来了,在手机模拟器上对程序进行操作,工具显示效果如下: ?...点击左上角的红色圆点,这时项目开始启动了,由于leaks是动态监测,所以手动进行一系列操作,可检查项目中是否存在内存泄漏问题。...因为该block本来就是当前viewcontroller的一部分,现在盖子部门又强引用self,导致循环引用无法释放。 ...我们有时候需要在子视图或者某个cell中点击跳转等操作,需要在子视图cell中持有当前ViewController对象,这样跳转之后的back键才能直接返回该页面,同时也不销毁当前ViewController

    2K70

    iOS字符串的本地化(APP 内的本地化切换) 、nib本地化、图片本地化

    当本地化的应用程序需要载入某一资源时,如图像、属性列表、nib文件,应用程序会检查用户的语言和地区,并查找相匹配的本地化文件夹。...如果找到了相应的文件夹,就会载入这个文件夹中的资源 I、nib& info.plist 本地化 本地化前的准备 先创建本地化文件夹(zh-Hans.lproj),让应用程序支持对应的语言环境,并选择选择当前需要本地化的资源...kunnan.blog.csdn.net/article/details/103733872 原理: 1、自定义解析本地化字符串的工具类LanguageManager 2、应用内切换语言生效的技术实现:采用销毁控制器...划重点 1、字符串的本地化 2、自定义解析本地化字符串的工具类LanguageManager、 3、例子:登录界面切换中英文(内含demo) 应用内切换语言生效的技术实现: 1、销毁控制器,重新进入一次...所在的文件夹,输入genstrings ViewController.m命令,生成字符串资源文件 -rw-r--r--@ 1 mac staff 714 9 17 11:52 ViewController.m

    1.6K30

    iOS右滑返回的实现【修订】

    NO; } } //这里就是非右滑手势调用的方法啦,统一允许激活 return YES; } II、QMUI导致右滑返回没有生效的解决方法 先来看看QMUI如何实现实现右滑返回...- (BOOL)shouldForceEnableInteractivePopGestureRecognizer { UIViewController *viewController = [self...当 interactivePopGestureRecognizer.enabled = NO 或者当前UINavigationController堆栈的viewControllers小于2的时候此方法无效...自定义了leftBarButtonItem按钮 - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)...:animated]; } 2.2 解决方法 所以当你自定义导航栏(自定义了leftBarButtonItem按钮)没采用系统的默认的实现,发生当前不可以手势返回,可先检查为什么当前状态,系统不允许你的手势返回

    1.7K20

    iOS开发系列——Storyboard

    到目前为止我们还没有解释我们的程序是如何显示默认视图界面的。...b.png 要实现这个登录,那么接下来就是事件和属性绑定的问题,大家应该可以猜到登录的逻辑代码肯定在ViewController.m中编写,那么storyboard文件是如何关联到这个类的呢?...如果我们在storyboard界面选中ViewController在Xcode右侧切换到Identity Inspector视图就会发现里面当前设置的是ViewController类,通过这个设置Main.storyboard...那么如何在代码中读取两个TextField的值并通过点击按钮触发相关事件验证登录合法性呢?...既然控件和代码属性方法已经做了关联,这里我们看一下具体效果,这里简单修改一下ViewController.m // // ViewController.m // FirstIOS // // Created

    3.3K40

    Swift 项目 - Xib | StoryBoard 多人协作技巧

    那么反过来说,如何使用Storyboard才不算滥用? 避免滥用,最好的方法就是定制规范,就好像代码中的诸多规范一样。...一个占位的容器视图指向子控制器的Embed Segue 按住Control键连线到想要包含的子控制器,占位视图的实例==子控制器的view(子控制器视图) 选择Embed连线方式后,子控制器 的尺寸变化成跟占位视图一样的尺寸...通过 Container View 创建的ChildViewController如何与主ViewController传参互相调用?...其实只要知道,苹果是如何把Storyboard的xml解析成视图,崩溃的错误内容也就容易看懂了 之前提到过,视图构造使用的是下面这个方法 required init?...[3]》其他相关文章。

    2.1K20

    iOS屏幕旋转

    navigationViewController, 那么就应该新建一个uinavigationViewController的子类,然后在这个类里面写上下面的代码,在使用的时候就用自定义的这个navCtr, 就是说需要在视图里面控制...UIInterfaceOrientationMaskPortrait; } } ---- 2.Controller层面的控制 //哪些页面支持自动转屏 - (BOOL)shouldAutorotate{ return YES; } // viewcontroller...supportedInterfaceOrientations{ return UIInterfaceOrientationMaskAllButUpsideDown; } ---- 3.使得特定ViewController...当然,使用这个方法是有前提的,就是当前ViewController是通过全屏的 Presentation方式展现出来的....有3种方式可以获取到“当前interfaceOrientation”: controller.interfaceOrientation,获取特定controller的方向 [[UIApplication

    1.7K60

    【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    为 控件 设置一个颜色值 newView.backgroundColor = [UIColor redColor]; 4.添加 UIView 控件 : 获取当前 ViewController 的... View 组件 , 然后将 生成的 UIView 控件添加到 该 View 控件中 ; //4....将 UIButton 添加到 View 中 [self.view addSubview:button]; 8.完整代码示例 : // // ViewController.m // 1.GenerateUIViewByCode...touch events and subclasses may draw differently 3.代码修改 enabled 属性 : 方法中 直接修改 sender.enabled 属性值 为 YES ...设置 4.7inch 大小 ; 2.设置 3 个 View Controller : 拖入 三个 ViewController , 并为其 View 设置 不同的背景颜色 ; 3.拖动箭头

    3.9K40

    iOS - 实现UINavigation全屏滑动返回(一)

    在非控制器下生效(用于滑动返回上一级) 在控制器下失效(防止控制器被移除,当然系统不会让我们把它移除,只是会出现bug) ?...苹果官方文档说明 翻译:第一个被添加的控制器成为永远不会被出栈的控制器 步骤 自定义一个 UINavigationController ,即继承于 UINavigationController...navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController...animated:(BOOL)animated { // 根据 栈 先进后出 if (self.viewControllers[0] == viewController) { // 控制器...清空手势代理就能实现滑动返回,iOS6不支持 self.interactivePopGestureRecognizer.delegate = nil; } // 如果当前控制器为控制器

    1K20

    Mac开发跬步积累(六): 响应链NSResponder Chain

    Action Messages Event Messages(事件消息): Event Messages主要指的是由键盘/鼠标/触控板触发的NSEvent事件.几乎所有的Event Messages都由当前窗口对象...可以根据具体的需求来重写这个方法实现相应的功能; Action Messages(行为消息): Action Messages主要是指一些操作指令的行为事件,比如"翻到下一页","移动到文章的最后一行","...当一个NSWindow对象在接收到鼠标点击(mouse-down)事件时,会自动设置鼠标所处的View为第一响应者;那么NSWindow对象如何确认某个对象是否能够成为第一响应者呢?...键盘事件响应开始 键盘事件与鼠标事件的起始响应者是不一样的,在viewDidAppear方法中,我们添加代码查看一下:当前窗口的第一响应者对象信息: ?...窗口的第一响应者 根据控制台信息,我们可以看出键盘事件的第一响应者是当前窗口对象NSWindow,在键盘事件的整个响应链中,ViewController是被忽略的,所以ViewController中的

    2.4K10

    iOS App 启动性能优化

    导语 本文介绍了如何优化 iOS App 的启动性能,分为四个部分: 第一部分科普了一些和App启动性能相关的前置知识 第二部分主要讲如何定制启动性能的优化目标 第三部分通过在WiFi管家这个具体项目的优化过程...App启动过程 解析Info.plist 加载相关信息,例如如闪屏 沙箱建立、权限检查 Mach-O加载 如果是胖二进制文件,寻找合适当前CPU类别的部分 加载所有依赖的Mach-O文件(递归调用Mach-O...但如果是大型App(自定义的动态库超过50个、编译结果二进制文件超过30MB),这部分耗时将会变得突出。所幸,苹果已经在Xcode中加入这部分的支持。...经过各种试验,最后发现唯一可靠的压缩算法是TinyPNG,其它各种方法,要么没效果,要么产生色差模糊。...于是检查相关代码进行深入分析,发现了几个问题比较严重: 有些程序员可能架构意识不是太强,直接在tabBarController的启动过程中插入了各种奇怪的业务,例如检查WiFi连接状态变化、配置拉取,而这些业务显然应该在另外的某些地方统一处理

    2.2K92
    领券