无法更新计算属性以在Xcode 12中显示工作表的问题之前已解决

问题描述

代码具有以下问题:第一次单击任何列表项都会显示带有“ This is sheet 0”的表-表示@State属性“ var example:Int”不会作为按钮代码的一部分进行更新(退出实时预览并重新启动,将重现该问题。

你知道这里发生了什么吗??

代码

import SwiftUI

struct testing2: View {
    @State private var showSheet = false
    @State var example: Int = 0
    var computedItem: String {
        "This is sheet \(example)"
    }

    var body: some View {
        List(0 ..< 5) { item in
            Button("List item: \(item)") {
                self.example = item
                showSheet.toggle()
            }
        }
        .sheet(isPresented: $showSheet,content: {
            Text("\(computedItem)")
        })
    }
}

解决方法

不确定这是否是最佳答案,但这对我有用:

struct ContentView: View {
    @State private var showSheet = false
    @State var example: Int = 0
    @State var computedItem: String = ""

    var body: some View {
        List(0 ..< 5) { item in
            Button("List item: \(item)") {
                self.example = item
                self.computedItem = "This is sheet " + String(self.example)
                showSheet.toggle()
            }
        }
        .sheet(isPresented: $showSheet) {
            sheetView(computedItem: $computedItem)
        }
    }
}

struct sheetView: View {

    @Binding var computedItem: String

    var body: some View {
        Text(self.computedItem)
    }
}