swiftui - 如何使用 NavigationLink 在列表行中拥有其他可选区域?

标签 swiftui

如果行 View 中还有一个 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()
          }
        }
      }
    }
  }
}

最佳答案

您的按钮不应该是默认样式。
这是一个可能的方法的简单演示。使用 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)
                    }
                }
            }
        }
    }
}

关于swiftui - 如何使用 NavigationLink 在列表行中拥有其他可选区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57237661/

相关文章:

tabbar - 如何在 SwiftUI 中为选项卡栏项目(选择时)设置动画?

swiftui - 如何在 SwiftUI TextField 中将光标移动到末尾?

SwiftUI 制作一个只显示一定数量行的列表

listview - 如何使 SwiftUI 列表在 tvOS 中可滚动

ios - 如何在出现时以编程方式触发 NavigationLink

swift - 有什么方法可以快速为通用参数分配默认值吗?

arrays - 索引超出范围 SwiftUI

swift - SpriteKit 场景的大小/缩放不正确

SwiftUI 预览失败并出现 __designTimeString 错误

SwiftUI - 在 iPad 上拖放重新排序可以在没有 EditMode 的情况下工作吗?