J'aimerais utiliser le mode Editbutton () pour basculer le mode d'édition et faire passer mes lignes de liste en mode édition. Je veux inclure un nouveau bouton en mode édition pour ouvrir un modal. Je ne peux même pas obtenir la valeur EdiDmode pour commuter le contenu de la ligne du tout.
struct ContentView: View {
@Environment(\.editMode) var isEditMode
var sampleData = ["Hello", "This is a row", "So is this"]
var body: some View {
NavigationView {
List(sampleData, id: \.self) { rowValue in
if (self.isEditMode?.value == .active) {
Text("now is edit mode") // this is never displayed
} else {
Text(rowValue)
}
}
.navigationBarTitle(Text("Edit A Table?"), displayMode: .inline)
.navigationBarItems(trailing:
EditButton()
)
}
}
}
Ajout à @kontiki Réponse, si vous préférez utiliser une valeur booléenne pour EditMode, il est donc plus facile de modifier, utilisez ceci @State
variable:
@State var editMode: Bool = false
Et modifier le .environment
modificateur à ceci:
.environment(\.editMode, .constant(self.editMode ? EditMode.active : EditMode.inactive))
Maintenant, la commutation/à partir du mode édition avec votre propre bouton est aussi simple que:
Button(action: {
self.editMode = !self.editMode
}, label: {
Text(!self.editMode ? "Edit" : "Done")
})