我正在尝试显示一个动态List
,其中包含包含Toggle
元素的行。 Toggle
最初布局正确,但是当它们滚动进和滚出 View 时(即单元格重用时),它们的布局会中断。
最小示例代码:
import SwiftUI
struct SwitchList: View {
var body: some View {
List(0..<20) { _ in
SwitchRow(value: Bool.random())
}
}
}
struct SwitchRow: View {
@State var value: Bool
var body: some View {
Toggle(isOn: $value) {
Text("A switch row")
}
}
}
(这是在模拟器上使用 iOS 13.2.2 (17B102)。)
我做错了什么,还是这是一个错误?如何让 Toggle
正确显示?
最佳答案
这是 iOS 13.2+ 中的错误/回归
工作 - iOS 13.1 (17A844)/Xcode 11.1 (11A1027)
损坏 - iOS 13.2.2 (17B102)/Xcode 11.2.1 (11B500)
损坏 - iOS 13.3 beta (17C5032d)/Xcode 11.3 beta (11C24b)
解决方法
此错误似乎仅影响采用 data
参数的 List
初始值设定项。此代码在功能上是等效的,但不受该错误的影响。
struct SwitchList: View {
var body: some View {
List {
ForEach(0..<20) { _ in
SwitchRow(value: Bool.random())
}
}
}
}
关于ios - SwiftUI:动态 `Toggle` 中的 `List` s 在重用时会破坏其布局吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58916945/