【问题标题】:SwiftUI Animation bug?SwiftUI 动画错误?
【发布时间】:2021-07-19 20:25:46
【问题描述】:

我在使用 macOS Montery 3 和 Xcode 13 Beta 3 时遇到了这个奇怪的问题,我在 List 和动画中遇到了这个错误:

[General] Row index 0 out of row range (numberOfRows: 0) for <SwiftUIListCoreOutlineView: 0x133885000>

这有点难以解释,但这里有一个简单的复制:

最小可重现示例

  1. 创建一个新的 SwiftUI macOS 应用程序
  2. 粘贴此代码:
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")
        }
    }
}
  1. 运行应用程序,然后尝试调整侧边栏的大小。 (您应该能够)
  2. 然后按工具栏上的减号按钮。这只是删除了所有项目
  3. 然后,侧边栏的大小调整应该被打破。您可能还会在控制台中遇到一堆错误。

是否有人能够重现此问题,这是 SwiftUI 中的错误吗?

【问题讨论】:

    标签: swift macos swiftui


    【解决方案1】:

    得到了相同的行为。如果我删除“withAnimation”,代码运行良好。或者将“items.removeAll()”放在“withAnimation”之外

    【讨论】:

    • 是的。我想我会删除动画
    猜你喜欢
    • 2021-08-04
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多