热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

SwiftUI:无法推断通用参数“主题”

如何解决《SwiftUI:无法推断通用参数“主题”》经验,如何解决这个问题?

LoadingView使用SwiftUI 构建了一个用于在我从API提取远程数据时在应用程序中显示一些加载内容的功能。我正在使用Xcode 11.0 beta 5。

这是LoadingView

struct LoadingView: View where Content: View {

    @Binding var isShowing: Bool
    var content: () -> Content

    var body: some View {

        GeometryReader { geometry in

            ZStack(alignment: .center) {

                self.content()
                    .disabled(self.isShowing)
                    .blur(radius: self.isShowing ? 3 : 0)

                VStack {
                    Text("Loading...")
                    ActivityIndicator(isAnimating: .constant(true), style: .large)
                }
                .frame(width: geometry.size.width / 2,
                       height: geometry.size.height / 5)
                    .background(Color.white)
                    .foregroundColor(Color.primary)
                    .cornerRadius(5)
                    .opacity(self.isShowing ? 1 : 0)
            }
        }
    }
}

这是我的数据存储。它被声明为ObservableObject具有多个@Published属性。它还从API进行一些远程获取:

class CharacterStore: ObservableObject {

    @Published private(set) var isLoading = false


    // Fetches some stuff from a remote api
    func fetch() {

        self.isLoading = true

        myService.getCharacters { (result) in
            DispatchQueue.main.async {
                self.isLoading = false
            }
        }
    }
}

最后,这是我要显示的视图LoadingView及其内容ContentView。当然,@EnvironmentObject在显示此视图之前,请先设置。

struct ContentView: View {

    @EnvironmentObject var charStore: CharacterStore

    var body: some View {

        LoadingView(isShowing: self.$charStore.isLoading) { // Here I get the error

            // Show some Content here
            Text("")
        }
    }
}

问题是我想绑定self.$charStore.isLoadingLoadingView。在这一行中,我得到以下错误:

无法推断通用参数“主题”

我尝试了几种方法,但是这些都不起作用。顺便说一句:如果我@StateContentView其中使用属性,则可以像这样正常工作:

struct ContentView: View {

    @EnvironmentObject var charStore: CharacterStore

    @State var loads: Bool = false

    var body: some View {

        LoadingView(isShowing: self.$loads) { // Here I get no error

            // Show some Content here
            Text("")
        }
    }
}

我想念什么吗?如果您需要更多信息,请告诉我,如果需要,我可以提供更多内容。

谢谢您的帮助!


推荐阅读
author-avatar
nct6778550
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有