我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.isLoading
到LoadingView
。在这一行中,我得到以下错误:
无法推断通用参数“主题”
我尝试了几种方法,但是这些都不起作用。顺便说一句:如果我@State
在ContentView
其中使用属性,则可以像这样正常工作:
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("") } } }
我想念什么吗?如果您需要更多信息,请告诉我,如果需要,我可以提供更多内容。
谢谢您的帮助!