如何使用NavigationLink在“列表”行中具有其他可选区域?

时间:2019-07-28 03:14:03

标签: swiftui

如果行视图中还有一个NavigationLink,那么除了导航之外,我无法选择一行。 UIKit没问题。是因为目前缺乏实施,仅仅是一个错误而已,还是实际上目前有可能?

这可能是可以说明问题的最简单的代码段。

struct ContentView: View {
  var body: some View {
    NavigationView {
      List {
        HStack {
          Button("How can I tap over here without transitioning?") { }
          NavigationLink( destination: ContentView() ) {
            Spacer()
          }
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:2)

您的按钮应该不是默认样式。

这里是可能方法的简单演示。使用Xcode 11.7 / iOS 13.7进行了准备和测试

demo

struct ContentView: View {
    @State private var selected = false
    var body: some View {
        NavigationView {
            List {
                HStack {
                    Button(action: { self.selected.toggle() }) {
                        Image(systemName: selected ? "checkmark.circle" : "circle")
                    }.buttonStyle(PlainButtonStyle())
                    .padding(.horizontal)

                    NavigationLink( destination: Text("Details") ) {
                        Text("Link")
                            .frame(maxWidth: .infinity, alignment: .leading)
                    }
                }
            }
        }
    }
}