obsidian/笔记文件/2.笔记/keyWindow.rootViewController.md
2025-03-26 00:02:56 +08:00

2.0 KiB
Raw Blame History

#ios #unity

全称 [UIApplication sharedApplication].keyWindow.rootViewController

在iOS开发中[UIApplication sharedApplication].keyWindow.rootViewController 是一个用于访问当前应用程序的主窗口的根视图控制器的表达式。这里是对各个部分的详细解释:

[UIApplication sharedApplication]: 这是获取当前应用程序的单例实例。在iOS应用中UIApplication类管理应用程序的事件循环和响应系统包括处理触摸事件、远程通知等。通过调用sharedApplication类方法你可以获得这个单例实例。
.keyWindow: 这个属性返回当前应用程序的主窗口UIWindow对象。主窗口是应用程序用户界面的主要容器它通常包含了应用程序的根视图控制器和其他视图。
.rootViewController: 这个属性返回当前主窗口的根视图控制器UIViewController的子类。根视图控制器是管理主窗口内容的主要控制器它负责呈现和管理应用程序的顶层视图和其他子视图控制器。

综合起来,[UIApplication sharedApplication].keyWindow.rootViewController 允许你访问并操作当前应用程序主窗口的根视图控制器,这是在进行视图管理、事件处理或自定义用户界面时非常常用的一个表达式。

需要注意的是在iOS 13及以后的版本中由于引入了新的UIScene和UIWindowScene概念应用程序可能不再有一个单一的“主窗口”。在这些情况下你可能需要通过不同的方式来获取当前活动的窗口或视图控制器。例如你可能需要使用UISceneDelegate或UIWindowSceneDelegate来访问与特定场景相关联的窗口和视图控制器。

unity打包成ios对应的xcode工程中也是通过这个接口获取到unity最外层的根窗口界面然后可以配合presentFromViewController的方式,完成视图界面的跳转和切换;

逻辑示例参考:

!Pasted image 20241025100934.png