gpt4 book ai didi

完成后的 SwiftUI EditButton 操作

转载 作者:搜寻专家 更新时间:2023-11-01 06:50:39 25 4
gpt4 key购买 nike

当用户点击显示为“完成”的 EditButton 时,您如何设置要执行的操作?甚至可以这样做吗?

请注意,这与在用户可能执行的每个单独编辑中执行操作(如 onDeleteonMove)不同。当用户完成所有更改并准备好提交时,您如何设置要执行的操作?

这是必要的,因为我正在对模型的临时副本进行所有更改,并且在用户点击“完成”之前不会将更改提交给实际模型。我还提供了一个“取消”按钮来放弃更改。

struct MyView: View {
@Environment(\.editMode) var mode

var body: some View {
VStack {
HStack {
if self.mode?.value == .active {
Button(action: {
// discard changes here
self.mode?.value = .inactive
}) {
Text("Cancel")
}
}

Spacer()

EditButton()
// how to commit changes??
}
// controls to change the model
}
}
}

是否可以在 EditButton 上为“Done”设置一个 Action ,或者我是否必须提供自己的按钮来像 EditButton 一样工作?我当然可以做到这一点,但似乎使用 EditButton 应该很容易做到。

最佳答案

使用 onChange modifier 的 XCode 12/iOS 14 的新答案.

此方法使用可通过 @Environment 获得的 SwiftUI editMode 键路径以及新的 onChange 修饰符来确定 View 何时进入和退出编辑模式。

在您看来,请执行以下操作:

@Environment(\.editMode) private var editMode

...

.onChange(of: editMode!.wrappedValue, perform: { value in
if value.isEditing {
// Entering edit mode (e.g. 'Edit' tapped)
} else {
// Leaving edit mode (e.g. 'Done' tapped)
}
})

关于完成后的 SwiftUI EditButton 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57617524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com