gpt4 book ai didi

Swift - 我想从 View Controller 中的 SceneDelegate.swift 访问信息

转载 作者:行者123 更新时间:2023-11-30 10:26:15 25 4
gpt4 key购买 nike

当使用AppDelegate时,这行代码将允许我在应用程序委托(delegate)和 View Controller 之间发送变量。

let firstName = AppDelegate.shared().givenName

我能为sceneDelegate做什么?

最佳答案

好吧,我建议您使用这样的用户默认值:

// Set
UserDefaults.standard.set(self.currentZoomLevel, forKey: "zoomLevel")
// Read
if let zoomLevel = UserDefaults.standard.object(forKey: "zoomLevel") as? CGFloat {
return zoomLevel
}

另一种方法应该是这样的

var window: UIWindow?

// On your scene delegate you have an instance variable Window
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
let window = UIWindow(windowScene: windowScene)
self.window = window
}

使用 window 对象,您可以访问导航 Controller 并直接访问您的 viewController:

var wantedViewController: DesiredViewController?
let _ = window?.rootViewController?.children.forEach({ navigation in
if let navController = navigation as? UINavigationController {
if let tabBar = navController.viewControllers.filter({ viewController in
viewController is MyTabBarController
}).first {
if let container = tabBar.children.filter({ $0 is ContainerViewController }).first as? ContainerViewController {
if let innerViewController = container.children.filter({ $0 is RootViewController }).first as? RootViewController {
wantedViewController = innerViewController.orderedViewControllers.filter({ $0 is DesiredViewController }).first as? DesiredViewController
}
}
}
}
})

这段代码有点复杂,因为我的项目结构,我的 View Controller 位于 TabController 内,可能你的可以没那么复杂,你会发现 View Controller 更容易。只需调试并看看它是如何发生的。

关于Swift - 我想从 View Controller 中的 SceneDelegate.swift 访问信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60032244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com