【问题标题】:SwiftUI Navigation Link containing a Button包含按钮的 SwiftUI 导航链接
【发布时间】: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

那么如何让按钮在导航链接中执行操作?

或者,如果这不可能,我怎样才能让点击项目视图执行一项操作而点击按钮执行另一项操作?

【问题讨论】:

    标签: swift swiftui swiftui-list swiftui-navigationlink swiftui-button


    【解决方案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))
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-01
      相关资源
      最近更新 更多