在SwiftUI中,当我进入编辑模式而不使用onDelete时,如何避免行内容缩进列表中?这是当前发生这种情况时我的行内容缩进的方式,好像“删除”按钮将显示在左侧,但是我没有使用onDelete,所以那里没有按钮。
GIF动画
代码摘录在这里:
var body: some View {
VStack{
List() {
ForEach(gcTasks) { gcTask in
HStack {
GCTaskRow(withGcTask: gcTask, haha: "")
}
}
// .onDelete(perform: self.deleteTask) // NOTE: HAVE REMOVED
.onMove(perform: self.move)
}
}
.environment(\.editMode, listInEditMode ? .constant(.active) : .constant(.inactive))
}
背景-实际上一直想一直处于编辑模式,即总是可以上下拖动行,但是永远不会使用Delete,因此要查看onDelete的所有痕迹,在这种情况下是自动缩进。
更新:另一个示例(操场)如何发生不必要的缩进:
import SwiftUI
import PlaygroundSupport
let modelData: [String] = ["Eggs", "Milk", "Bread"]
struct ListTestNoDelete: View {
private func move(from uiStartIndexSet: IndexSet, to uiDestIndex: Int) {
print("On Move")
}
var body: some View {
NavigationView {
VStack {
List {
ForEach(modelData, id: \.self) { str in
Text(str)
}
.onMove(perform: self.move)
}
.environment(\.editMode, .constant(.active))
.navigationBarTitle( Text("Test") )
}
}
}
}
let listTest = ListTestNoDelete()
PlaygroundPage.current.liveView = UIHostingController(rootView: listTest)
也许不是很好的解决方法,但是您可以将列表扩展到左侧。
List {
// ...
}
// .padding(.leading, self.isEditing == .inactive ? 0 : -39)
.padding(.leading, self.isEditing ? -45 : 0)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句