SwiftUI 闭包更新 init 内的 @State

Pr0*_*ion 5 swiftui

当我创建视图时,我希望登录用户,登录完成后,视图将发生变化。

由于我对 SwiftUI 还很陌生,所以我尝试的方式似乎不起作用。(我确实知道它与 SwiftUI 结构有关)

  1. 我有一个状态变量来知道 ProgressView 是否应该动画
@State private var isLoading: Bool = true
Run Code Online (Sandbox Code Playgroud)
  1. 我有一个登录用户的转义闭包
init() {
    userService.login { (didError, msg) in
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 进度视图(尚未测试)
ProgressView().disabled(isLoading).frame(alignment: .center)
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时:

userService.login { (didError, msg) in
    isLoading.toggle() or self.isLoading.toggle()
}
Run Code Online (Sandbox Code Playgroud)

Xcode 返回:转义闭包捕获变异的“self”参数。

有谁知道我怎样才能使这样的事情发挥作用?

Asp*_*eri 7

而不是在内部某个地方init调用它,例如.onAppearbody

var body: some View {
   VStack {
      // .. some content
   }
   .onAppear {
      userService.login { (didError, msg) in
         self.isLoading.toggle()
      }
   }
}
Run Code Online (Sandbox Code Playgroud)