当视图消失时退出EditMode

问题描述

我用EditMode输入EditButton,并且我想在我的view消失时留下它,以使EditMode不会继续到下一个view,这是我的代码

@State var array = [1,2,3,4]

var body : some View {
  vstack{
    HStack{
      Spacer()
      EditButton()
    }
    List{
       ForEach(self.array){ int in
            Text(int)
       }
    }
  }
}

用户移动到具有不同列表的其他视图时,无需事先按EditButton上的“完成”,EditMode保持不变,但我希望它成为.inactive。 / p>

解决方法

您可以使用@Environment(\.editMode)并将其设置为.inactive中的onDisappear

struct ContentView: View {
    @Environment(\.editMode) var editMode
    
    var body: some View {
        VStack {
            ...
        }
        .onDisappear {
            editMode?.wrappedValue = .inactive
        }
    }
}