【问题标题】:SwiftUI - How to get access to "WindowScene"SwiftUI - 如何访问“WindowScene”
【发布时间】:2021-06-23 02:31:13
【问题描述】:

在观看 WWDC 21 视频引用 StoreKit 2 时,他们引用了一些函数,其中他们让 value = WindowScene 如下:

    func manageSubscriptions() async {
        if let windowScene = self.view.window?.windowScene {
            do {
                try await AppStore.showManageSubscriptions(in: windowScene)
            } catch {
                //error
            }
        }
    }

let 行错误并显示消息:Type of expression is ambiguous without more context

如果我尝试提供更多上下文,例如:

        if let windowScene = (self.view.window?.windowScene)! as UIWindowScene {

有人告诉我:Value of type 'MyStruct' has no member 'view'

我缺少什么,必须是一些简单的东西才能访问这个所需的 UI 元素?

谢谢

添加: 我想补充一点,我使用的是使用 SceneDelegate 和 AppDelegate 创建的 SwiftUI 应用程序,而不是简单的结构:App,结构类型。所以我猜我需要访问 SceneDelegate 中的某些内容才能获得正确的对象..

【问题讨论】:

  • 好吧,它不太管用,但我认为它让我更接近我应该去的地方..
  • 是的,你可以忽略它
  • “但没有显示”是的,我刚刚尝试过,也没有显示...您可能需要已经设置订阅或其他东西
  • 感谢您让我知道,所以我不会在那里失去理智。

标签: xcode swiftui


【解决方案1】:

只是为任何有兴趣的人提供答案,感谢@aheze 找到它,@Matteo Pacini 提供解决方案,以便在使用具有 AppDelegate/SceneDelegate 结构的 SwiftUI 应用程序时使用此特定方法,此将工作:

@MainActor
func manageSubscriptions() async {
    if let windowScene = UIApplication.shared.connectedScenes.first {
        do {
            try await AppStore.showManageSubscriptions(in: windowScene as! UIWindowScene)
        } catch {
            //error
        }
    }
}

【讨论】:

    猜你喜欢
    • 2021-07-23
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多