我在 SwiftUI 中发现了奇怪的行为。
当我第一次点击列表列时,工作表显示空文本。第二次后似乎正确。
你能帮我吗?
import SwiftUI
let fruits: [String] = [
"Apple",
"Banana",
"Orange",
]
struct ContentView: View {
@State var isShowintSheet = false
@State var selected: String = ""
var body: some View {
NavigationView {
List(fruits, id: \.self) { fruit in
Button(action: {
selected = fruit
isShowintSheet = true
}) {
Text(fruit)
}
}
}
.sheet(isPresented: $isShowintSheet, content: {
Text(selected)
})
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Run Code Online (Sandbox Code Playgroud)
使用.sheet(item:)来代替。这里是固定代码。
已通过 Xcode 12.1 / iOS 14.1 验证
struct ContentView: View {
@State var selected: String?
var body: some View {
NavigationView {
List(fruits, id: \.self) { fruit in
Button(action: {
selected = fruit
}) {
Text(fruit)
}
}
}
.sheet(item: $selected, content: { item in
Text(item)
})
}
}
extension String: Identifiable {
public var id: String { self }
}
Run Code Online (Sandbox Code Playgroud)