ios - 当SwiftUI中观察到的对象发生变化时如何禁用列表中的动画?

标签 ios swiftui

View 模型数据更改时如何禁用动画?

我有以下代码:

struct FormView: View {

    @ObservedObject var viewModel: FormViewModel

    var body: some View {
        List {
            ForEach(viewModel.options) { option in
                Text(option.displayValue)
            }
        }
    }
}

每次 View 模型更改 List用动画更新。
我怎样才能禁用它?
我尝试添加 .animation(nil)但这无济于事

最佳答案

我找到的解决方案是添加一个每次都会更改的唯一标识符,因此它每次都会在没有动画的情况下重建列表。在 iOS 13.4 上验证。

var body: some View {
    List {
        ForEach(viewModel.options) { option in
            Text(option.displayValue)
        }
    }
    .id(UUID()) // no animation
}

关于ios - 当SwiftUI中观察到的对象发生变化时如何禁用列表中的动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59013217/

相关文章:

ios - 对设备的 iOS 5 SDK 功能与 iOS 5 功能感到困惑

ios - Cell 在 iPad 上没有正确隐藏?

iphone - 什么样的绘图技术是合适的?

ios - 过渡动画在 iOS 16 中不起作用,但在 iOS 15 中起作用

swiftui - 可以在 SwiftUI 中使用 NSTrackingSeparatorToolbarItem 吗?

ios - SwiftUI 中的多行 TextView

ios - NSTimer 和动画同步

ios - iPhone 推送通知字数限制

swift - 从 Int 到 String 的属性更改会导致 SwiftUI View 不更新

swiftui - 如何在 SwiftUI 中将 .navigationBarTitle 对齐更改为 iOS 尾随(或者从右到左)