问题描述
此代码具有以下问题:第一次单击任何列表项都会显示带有“ 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)
}
}