我现在遇到了几种情况,可以方便地找到"最顶层"的视图控制器(负责当前视图的控制器),但是还没有找到方法.

基本上,挑战在于:假设一个是executing in a class that is not a view controller(或一个视图)[and does not have the address of an active view],并且还没有传递最顶层视图控制器的地址(或者说,导航控制器的地址),是否有可能找到该视图控制器?(如果是,怎么做?)

或者,如果做不到这一点,有可能找到最上面的视图吗?

推荐答案

iOS 4在UIWindow上引入了rootViewController属性:

[UIApplication sharedApplication].keyWindow.rootViewController;

不过,在创建视图控制器之后,您需要自己设置它.

Ios相关问答推荐

第三方框架的iOS隐私声明

如何在SWIFT中处理不可发送的类型?

在SwiftUI中使用系统图像和色调创建圆形按钮

Xcode版本15.2上未显示iOS 16.4的模拟器

有没有办法观察滚动的SwiftUI图表的内容偏移量?

IOS:在UI线程中执行代码的闭包样式的替代

SWIFT-仅解码感兴趣的元素

在我的 M1 上出现 Architecture arm64 问题,因此我无法运行我的旧项目

在 SwiftUI 中放置全局 NavigationPath 的位置

iOS - 判断开发者模式是否开启 (Swift)

iOS按钮和navigationLink在List中相邻

async/await、Task 和 [weak self]

Swift 共享数据模型在页面之间进行通信.这个怎么运作

'+entityForName: nil 不是合法的 NSManagedObjectContext 参数 - 核心数据

通过 segue 传递数据

如何在 iPhone 中为透明的 PNG 图像着色?

由于 NSInvalidUnarchiveOperationException 导致 iOS11 WKWebview 崩溃

以编程方式 Select UITextField 中的所有文本

如何在 Swift 中将新单元格插入 UITableView

有什么方法可以加粗 NSString 的一部分?