我想在用户退出应用程序时产生一些功能
我在 appDelegate 文件中找到了 applicationDidEnterBackground 函数,但我无法访问现在打开的 View Controller ,因此我无法访问所需的函数 我无法使用 instantiateViewController 函数,因为它创建了一个新函数,但我需要存储在已打开的 View 中的信息
有什么方法可以调用已打开的 View Controller 实例的函数???
最佳答案
我有时有类似的要求,所以我使用静态方法创建了 UIViewController
扩展来返回“顶部”viewController。它看起来像这样:
extension UIViewController {
static func topViewController(_ viewController: UIViewController? = nil) -> UIViewController? {
let viewController = viewController ?? UIApplication.shared.keyWindow?.rootViewController
if let navigationController = viewController as? UINavigationController, !navigationController.viewControllers.isEmpty {
return self.topViewController(navigationController.viewControllers.last)
} else if let tabBarController = viewController as? UITabBarController,
let selectedController = tabBarController.selectedViewController {
return self.topViewController(selectedController)
} else if let presentedController = viewController?.presentedViewController {
return self.topViewController(presentedController)
}
return viewController
}
}
这允许您通过调用 let top: UIViewController? 来获取对正在显示的 viewController 的引用。 = UIViewController.topViewController()
.
关于ios - 如何从应用程序委托(delegate)获取打开的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59430107/