【问题标题】:SwiftUI closure update @State inside initSwiftUI 闭包更新 @State init
【发布时间】:2020-11-30 20:23:51
【问题描述】:

当我创建一个视图时,我希望用户登录,当登录完成时,视图会改变。

由于我对 SwiftUI 很陌生,因此我尝试的方式似乎行不通。 (我确实知道这与 SwiftUI 结构有关)

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

当我尝试这样做时:

userService.login { (didError, msg) in
    isLoading.toggle() or self.isLoading.toggle()
}

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

有谁知道我怎样才能做出这样的事情?

【问题讨论】:

  • 结构中不允许使用这种类型的功能。创建一个视图模型作为一个类。然后把这段代码放到类中

标签: swiftui


【解决方案1】:

而不是init.onAppear 内部的某个地方调用它body,就像

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 2020-10-21
    • 2021-08-06
    • 1970-01-01
    相关资源
    最近更新 更多