gpt4 book ai didi

macos - macOS 上的 SwiftUI : How to enable UI for onDelete (deletion from List)

转载 作者:行者123 更新时间:2023-12-04 11:22:01 25 4
gpt4 key购买 nike

也许我今天早上特别密集,但我试图从 List 中删除一行在 macOS 上的 SwiftUI 中。

问题是没有公开的 UI 来执行删除。我的意思是 List不响应删除按键,没有右键菜单,也不支持任何其他手势,如滑动删除(无论如何在 macOS 上会很奇怪)。

这是我正在使用的示例:

import SwiftUI

struct ContentView: View {
@State var items = ["foo", "bar", "baz"]
@State var selection: String? = nil

var body: some View {
List(selection: $selection) {
ForEach(items, id: \.self) { Text($0) }
.onDelete { self.items.remove(atOffsets: $0)}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}

iOS 上完全相同的代码为我提供了一个带有标准“向左滑动以删除”UI 的表格 View 。在 macOS 上什么都没有。

我尝试添加
    .onDeleteCommand(perform: {
if let sel = self.selection, let idx = self.items.firstIndex(of: sel) {
self.items.remove(at: idx)
}
})

List但仍然没有响应删除按键。

如何启用 List macOS 上的行删除?

最佳答案

此代码启用“删除”菜单并在我选择“编辑”>“删除”时删除所选项目(无需手动连接菜单):

struct ContentView: View {
@State var items = ["foo", "bar", "baz"]
@State var selection: String? = nil

var body: some View {
List(selection: $selection) {
ForEach(items, id: \.self) { Text($0) }
}
.onDeleteCommand {
if
let sel = self.selection,
let idx = self.items.firstIndex(of: sel) {
print("delete item: \(sel)")
self.items.remove(at: idx)
}
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.animation(.default)
}
}

然后,要使删除键起作用,请将其设为与删除菜单选项等效的键盘:
- 编辑 Main.storyboard
- 选择编辑 > 删除
- 单击“等效键”字段
- 按删除键。

enter image description here

运行应用程序,选择一个项目,点击删除键,你的项目应该消失了。

关于macos - macOS 上的 SwiftUI : How to enable UI for onDelete (deletion from List),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59765271/

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