包含声明的闭包不能与函数构建器“ViewBuilder”一起使用

yar*_*ara 8 swift swiftui

我不能在 swift ui view 块中声明一个变量

 var body: some View {
     let isHuman = false
     Text("Levels \(isHuman)")
 }
Run Code Online (Sandbox Code Playgroud)

Abu*_*eid 10

你不应该在 SwiftUI 构建器块内创建一个变量,你应该在主体范围之外创建它,

  var isPlaying = false

  var body: some View {
      Text("Levels \(isPlaying)")
  }
Run Code Online (Sandbox Code Playgroud)

Swift UI 使用一个函数构建器块,它只能包含构建器可以理解的内容。那么你应该在 builder 块中写的只是 View Type 和 [View] 但是,如果你想声明一个变量,你可以通过将它引入一个新的子类来解决它

此功能的目的是在 Swift 中启用嵌入式 DSL 的创建——允许您定义可以翻译成其他内容的内容

另外,你可以使用。

 @State var isPlaying: Bool = false
Run Code Online (Sandbox Code Playgroud)

笔记

在执行变通方法之前检查您的代码两次,您可能对 swift-UI 的工作方式有误解?