【发布时间】:2021-07-23 19:54:19
【问题描述】:
我在 macOS Montery Beta 3 中遇到了 List 的奇怪问题,其中一些列表项目被剪裁,您必须上下滚动才能取消剪裁。
示例: https://imgur.com/a/P0TUt85
复制
- 新建一个空白的 SwiftUI macOS 项目
- 粘贴以下代码:
struct Bla: Identifiable {
var text: String
var subtext: String
var id = UUID()
}
struct ContentView: View {
@State var data = (0..<100).map { Bla(text: "Text: \($0)", subtext: "Subtext: \($0)")}
var body: some View {
NavigationView {
List(data) { item in
VStack(alignment: .leading) {
Text(item.text)
Text(item.subtext)
.foregroundColor(.secondary)
}
}
.toolbar {
Button(action: {
var offset = 0
for i in 0..<data.count {
if i % 2 == 0 {
continue
}
data.remove(at: i - offset)
offset += 1
}
}) {
Image(systemName: "plus")
}
}
}
}
}
- 运行应用程序,并将列表滚动到中间。
- 按工具栏上的加号按钮。这只是删除了一半的项目。
- 您应该会看到剪辑问题。向上和向下滚动可以修复它。
这是我的代码还是 SwiftUI 的 List 的问题?
【问题讨论】:
-
使用 macOS build 21A5284e 并且无法复制。
-
@RTXGamer 奇怪。我正在使用相同的版本及其复制。你使用的是什么版本的 Xcode?此外,有时它不起作用,但 90% 的时间它都起作用。
-
Xcode 版本 13.0 beta 3 (13A5192j)
-
@RTXGamer 同样。在按下加号按钮之前,您是否确保先滚动到列表末尾附近? 如果你在列表的末尾,它就不起作用
-
yup 滚动到底部并单击工具栏按钮,没有观察到剪辑