SwiftUI - 当修改同一结构中的状态变量时如何避免刷新列表

And*_*lva 7 ios swift swiftui

我有一个主视图,其中包含带有 TabView 的主体,每个选项卡显示不同的列表。另外,我在主类的顶部声明了一个状态变量,用于控制是否必须显示类似模态的视图。

问题是,当我更改该状态变量的值时,主视图的所有主体都会用动画重新绘制。这不是所需的行为,因为我没有更改与更新该变量的列表关联的数据。

struct HomeView: View {
    @State private var selection = 0
    @State var modalShown = false //This is the problematic var that makes a list to be updated with an animation

    @EnvironmentObject var filters: UserFilters
    @EnvironmentObject var filtersViewController: FiltersViewController

    init() {
        UITabBar.appearance().backgroundColor = #colorLiteral(red: 0.03921568627, green: 0.03921568627, blue: 0.03921568627, alpha: 1)
        UITabBar.appearance().barTintColor = #colorLiteral(red: 0.03921568627, green: 0.03921568627, blue: 0.03921568627, alpha: 1)
    }

    var body: some View {
        return ZStack {
            TabView(selection: $selection){
                IncidencesView(modalShown: $modalShown) //A view that contains a list that is being refreshing
Run Code Online (Sandbox Code Playgroud)

至少,有没有办法避免列表更新动画?

谢谢你!

Asp*_*eri 2

至少,有没有办法避免列表更新动画?

提供的代码快照不可测试,因此只能即时执行...尝试以下操作

IncidencesView(modalShown: $modalShown.animation(nil))
Run Code Online (Sandbox Code Playgroud)