swift - SwiftUI 动画错误?
问题描述
我在使用 macOS Montery 3 和 Xcode 13 Beta 3 时遇到了这个奇怪的问题,我在List
's 和动画中遇到了这个错误:
[General] Row index 0 out of row range (numberOfRows: 0) for <SwiftUIListCoreOutlineView: 0x133885000>
这有点难以解释,但这里有一个简单的复制:
最小可重现示例
- 创建一个新的 SwiftUI macOS 应用程序
- 粘贴此代码:
struct ContentView: View {
@State var items = ["Item"]
@ViewBuilder var mainView: some View {
if items.isEmpty {
Text("Im empty")
}
else {
List(items, id: \.self) {s in
Text(s)
}
}
}
var body: some View {
NavigationView {
mainView
.toolbar {
Button(action: {
withAnimation {
items.removeAll()
}
}) {
Image(systemName: "minus")
}
}
Text("Second")
}
}
}
- 运行应用程序,然后尝试调整侧边栏的大小。(你应该能够)
- 然后按工具栏上的减号按钮。这只是删除了所有项目。
- 然后,应该打破侧边栏的大小调整。您可能还会在控制台中遇到一堆错误。
有没有人能够重现这个问题,它是 SwiftUI 中的一个错误吗?
解决方案
有同样的行为。如果我删除“withAnimation”,代码运行良好。或者将“items.removeAll()”放在“withAnimation”之外
推荐阅读
- python - (ValueError:列必须与键长度相同)来自情绪分析
- python - Statsmodels QuantReg 只会使用一定数量的特征进行训练
- c# - 如何读取和迭代 HTTP GET 参数?
- websphere - 有没有办法在 ibm websphere 中使用脚本来更改操作模式?
- docker - 关于 Traefik 在使用 swarm 部署时自动检测端口的困惑(因此与文档的多个部分相矛盾)
- python - 如何创建可以在 keras 中对模型输入数据进行切片的自定义损失函数
- google-sheets - 运行 Google 脚本之前未刷新电子表格数据
- python - 确定视频比特率 Python
- javascript - html 中的 Microsoft onedrive
- matlab - 找到一条线接触凸包的第一个点