我试图找到之前问过的类似问题,但是失败了。
我有一个简单的列表视图。在将真实数据添加到此列表之前,我正在使用ForEach显示某个列表项的10次迭代以创建布局。我有最后2行无法正确呈现的问题。但有时是另一排。我也曾在iPhone上进行过测试,有时是一排,有时是另一排。带有列表的视图的代码是这样的:
import SwiftUI
struct LocksView: View {
@State private var locksPaid = 0
var body: some View {
NavigationView {
List {
DateView()
.listRowInsets(EdgeInsets())
Picker(selection: $locksPaid, label: Text("Picker")) {
Text("All").tag(0)
Text("Not paid (2)").tag(1)
}
.pickerStyle(SegmentedPickerStyle())
.padding(10)
ForEach(0 ..< 10) {item in
LocksItemView()
}
}
.navigationBarTitle(Text("Locks"))
.navigationBarItems(trailing: EditButton())
}
}
}
列表项的代码是这样的:
import SwiftUI
struct LocksItemView: View {
@State private var paid : Bool = false
var body: some View {
HStack {
Text("L15")
.font(.title)
.fontWeight(.heavy)
.multilineTextAlignment(.center)
.frame(width: 80)
VStack(alignment: .leading) {
Text("nickname")
.fontWeight(.bold)
Text("category")
Text("4 000 THB")
.fontWeight(.bold)
}
Spacer()
Toggle(isOn: self.$paid) {
Text("Paid")
}
.labelsHidden()
}
}
}
为什么在列表的某些行中切换开关损坏?为什么它会移到左侧?
答案 0 :(得分:1)
这不是最后一项。如果您将ForEach
设置为20而不是10,然后向上或向下滚动,则会看到更多有趣的问题。
我认为实际上是List
错误的原因与this topic中的原因相同。
解决方法,如果这对您来说并不重要,请使用ScrollView
代替List
(经测试,没有错误)。否则,请提交雷达并等待修复。
答案 1 :(得分:1)
我首先在模拟器上尝试了您的代码,也遇到了同样的问题。但是后来我想起,13.2 iOS出现了一些问题,并尝试在我的设备(iPhone 7,iOS 13.1.1)上运行它,并且一切正常!我认为这是13.2 iOS中的问题,而不是列表中的问题。有一个示例,我如何更改代码以演示一切正常:
import SwiftUI
struct LocksView: View {
@State private var locksPaid = 0
var body: some View {
NavigationView {
List {
Picker(selection: $locksPaid, label: Text("Picker")) {
Text("All").tag(0)
Text("Not paid (2)").tag(1)
}
.pickerStyle(SegmentedPickerStyle())
.padding(10)
ForEach(0 ..< 200) {item in
LocksItemView(number: item)
}
}
.navigationBarTitle(Text("Locks"))
.navigationBarItems(trailing: EditButton())
}
}
}
struct LocksItemView: View {
@State private var paid : Bool = false
var number: Int
var body: some View {
HStack {
Text("L\(self.number)")
.font(.title)
.fontWeight(.heavy)
.multilineTextAlignment(.center)
.frame(width: 80)
VStack(alignment: .leading) {
Text("nickname")
.fontWeight(.bold)
Text("category")
Text("4 000 THB")
.fontWeight(.bold)
}
Spacer()
Toggle(isOn: self.$paid) {
Text("Paid")
}
.labelsHidden()
}
}
}
在我的手机上,结果是:
因此13.2版中存在一些错误,我希望Apple会修复所有问题