小编Nik*_*kur的帖子

如何在 watchOS6 中注入 .environmentObject()

我想在 watchOS6 中创建 SwiftUI 视图时注入 EnvironmentObject。

但是由于 WKHostingController 需要一个具体类型,我无法执行以下操作 ContentView().environmentObject(UserData())

class HostingController: WKHostingController<ContentView> {
    override var body: ContentView {
        return ContentView().environmentObject(UserData())
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码失败并出现以下错误:

无法将“some View”类型的返回表达式转换为“ContentView”类型

我见过这样的解决方法: 在 watchOS 中使用 environmentObject这似乎是一个黑客而不是一个正确的解决方案。

我问关于同在Twitter上watchOS工程师,他的回答是地方.environmentObject(UserData())的主体内ContentView()。我尝试这样做,但 Xcode 报告错误。

那么有没有人找到一种方法来做同样的事情?

swift swiftui watchos-6

2
推荐指数
1
解决办法
664
查看次数

SwiftUI - 在 watchOS 上登录 Apple 崩溃

我正在使用 SwiftUI 在 watchOS 上使用Apple实现登录

由于WKInterfaceAuthorizationAppleIDButton不符合 View 协议,我将它包装起来WKInterfaceObjectRepresentable用于在 SwiftUI 视图中使用它。

我已经实现了一个协调器来处理按钮上的点击,它还充当注册过程回调的委托。

下面是我的代码:

struct AppleLoginButton: WKInterfaceObjectRepresentable {

    typealias WKInterfaceObjectRepresentable = WKInterfaceObjectRepresentableContext<AppleLoginButton>

    func updateWKInterfaceObject(_ wkInterfaceObject: WKInterfaceAuthorizationAppleIDButton, context: WKInterfaceObjectRepresentableContext<AppleLoginButton>) {
        // No code required
    }

    class Coordinator: NSObject, ASAuthorizationControllerDelegate {

        @objc func buttonPressed(_ sender: WKInterfaceAuthorizationAppleIDButton) {

            let appleIDProvider = ASAuthorizationAppleIDProvider()
            let request = appleIDProvider.createRequest()
            request.requestedScopes = [.fullName, .email]

            let authorizationController = ASAuthorizationController(authorizationRequests: [request])
            authorizationController.delegate = self
            authorizationController.performRequests()
        }

        func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) { …
Run Code Online (Sandbox Code Playgroud)

watchkit watchos swiftui apple-sign-in

0
推荐指数
1
解决办法
491
查看次数

标签 统计

swiftui ×2

apple-sign-in ×1

swift ×1

watchkit ×1

watchos ×1

watchos-6 ×1