上下文菜单破坏性操作,SwiftUI
Context Menu Destructive Actions, SwiftUI
我试图在上下文菜单中添加删除操作,但它只是显示为默认的黑色。照片应用程序也为其删除操作使用了红色。我在网上的一些空间看到这不是 contextMenu
当前提供的功能,但是我也看到它在野外的第三方应用程序中使用 here。有谁知道如何做到这一点?
此外,查看 Apple 的 documentation for contextMenu
它说它们已被弃用,除了 macOS。我觉得很奇怪,他们在引入它仅一年后就弃用了它。这是否被我应该使用的另一个组件所取代?
var body: some View {
ScrollView {
LazyVGrid(columns: columns, spacing: 20) {
ForEach(photos) { photo in
Image(uiImage: UIImage(data: photo.imageData!)!)
.resizable()
.aspectRatio(1, contentMode: .fill)
.contextMenu(menuItems: {
Button(action: {
deletePhoto(selectedPhoto: photo)
}) {
Label("Remove", systemImage: "trash")
}
})
}
}
.padding()
.navigationBarTitle(Text("Albums"))
.navigationBarItems(trailing:
Button(action: {
self.showingImagePicker = true
}) {
Image(systemName: "plus.circle.fill")
}
)
.sheet(isPresented: $showingImagePicker, onDismiss: loadImage) {
ImagePicker(image: self.$inputImage)
}
}
}
我玩过不同的东西:fg、bg、accent 等但无济于事。我猜目前“不可能”。
ps ContextMenu 已弃用,但 .contextMenu 未弃用
你做对了。
这是 non-deprecated 一个。另一个不使用 ViewBuilder
public func contextMenu<MenuItems>(@ViewBuilder menuItems: () -> MenuItems) -> some View where MenuItems : View
我试图在上下文菜单中添加删除操作,但它只是显示为默认的黑色。照片应用程序也为其删除操作使用了红色。我在网上的一些空间看到这不是 contextMenu
当前提供的功能,但是我也看到它在野外的第三方应用程序中使用 here。有谁知道如何做到这一点?
此外,查看 Apple 的 documentation for contextMenu
它说它们已被弃用,除了 macOS。我觉得很奇怪,他们在引入它仅一年后就弃用了它。这是否被我应该使用的另一个组件所取代?
var body: some View {
ScrollView {
LazyVGrid(columns: columns, spacing: 20) {
ForEach(photos) { photo in
Image(uiImage: UIImage(data: photo.imageData!)!)
.resizable()
.aspectRatio(1, contentMode: .fill)
.contextMenu(menuItems: {
Button(action: {
deletePhoto(selectedPhoto: photo)
}) {
Label("Remove", systemImage: "trash")
}
})
}
}
.padding()
.navigationBarTitle(Text("Albums"))
.navigationBarItems(trailing:
Button(action: {
self.showingImagePicker = true
}) {
Image(systemName: "plus.circle.fill")
}
)
.sheet(isPresented: $showingImagePicker, onDismiss: loadImage) {
ImagePicker(image: self.$inputImage)
}
}
}
我玩过不同的东西:fg、bg、accent 等但无济于事。我猜目前“不可能”。
ps ContextMenu 已弃用,但 .contextMenu 未弃用 你做对了。
这是 non-deprecated 一个。另一个不使用 ViewBuilder
public func contextMenu<MenuItems>(@ViewBuilder menuItems: () -> MenuItems) -> some View where MenuItems : View