包含按钮的 SwiftUI 导航链接
Posted
技术标签:
【中文标题】包含按钮的 SwiftUI 导航链接【英文标题】:SwiftUI Navigation Link containing a Button 【发布时间】:2020-08-08 12:12:27 【问题描述】:我有一个如下所示的 SwiftUI 列表:
List
ForEach(items) item in
NavigationLink(destination: EditItemView(item: item))
ItemView(item: item, buttonAction:
// Do something
)
ItemView
在哪里:
struct ItemView: View
var item: Item
let buttonAction: () -> Void
var body: some View
HStack(alignment: .center)
Text(item.tile)
.font(.headline)
Spacer()
Button(action: buttonAction,
label:
Image(systemName: "plus.circle")
)
.padding(.horizontal)
但是,每当我点击按钮时,它不会执行按钮操作,而是转到导航链接操作 EditItemView
。
那么如何让按钮在导航链接中执行操作?
或者,如果这不可能,我怎样才能让点击项目视图执行一项操作而点击按钮执行另一项操作?
【问题讨论】:
【参考方案1】:这是一种可能的方法 - 仅更改 ItemView
通过用点击手势替换默认按钮(使用 Xcode 12 / ios 14 测试)
struct ItemView: View
var item: Int
let buttonAction: () -> Void
var body: some View
HStack(alignment: .center)
Text("Item \(item)")
.font(.headline)
Spacer()
Image(systemName: "plus.circle")
.padding(.horizontal).contentShape(Rectangle())
.highPriorityGesture(TapGesture().onEnded(buttonAction))
【讨论】:
以上是关于包含按钮的 SwiftUI 导航链接的主要内容,如果未能解决你的问题,请参考以下文章