gpt4 book ai didi

ios - 是否可以在 rootViewController 上调用方法?

转载 作者:行者123 更新时间:2023-11-28 15:41:29 25 4
gpt4 key购买 nike

我想观察全局属性 selectedTagIDs 并在 rootViewController 上运行一个方法。这可能吗?我如何获得对 rootViewController 的引用?

import UIKit

class Global {
static var sharedInstance = Global()
var tags = [Tag]()
var selectedTagIDs = [Int]() {
didSet {
// get error `use of unresolved identifier appDelegate`
let viewController = appDelegate.window!.rootViewController as! MainViewController
viewController.filterItems()
}
}
}

最佳答案

是的,如果您的 rootViewController 是您期望可以响应该方法调用的类类型,您可以这样做。有条件地检查 rootViewController as?主视图 Controller

您收到该错误的原因是您尚未在代码中定义 appDelegate 是什么。要解决此问题,我们可以使用可选链接来解包 UIApplication 单例的委托(delegate)并将其分配为 appDelegate 的值。从那里我们可以获得窗口,从而获得 rootViewController。当我们打开 viewController 时,我们有条件地检查它是否属于 MainViewController 类型,如果是,则将其告诉 filterItems()

if let appDelegate = UIApplication.shared.delegate as? AppDelegate, let viewController = appDelegate.window!.rootViewController as? MainViewController {
viewController.filterItems()
}

关于ios - 是否可以在 rootViewController 上调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43648235/

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