Swiftui 如何使用NavigationLink在列表行中设置其他可选区域?

Swiftui 如何使用NavigationLink在列表行中设置其他可选区域?,swiftui,Swiftui,如果行视图中还有一个NavigationLink,则除了导航之外,我无法选择行。UIKit没有问题。这是因为目前缺乏实现而不可能的,仅仅是一个bug,还是事实上目前是可能的 这可能是能够说明问题的最简单的片段 struct ContentView:View{ var body:一些观点{ 导航视图{ 名单{ HStack{ 按钮(“我怎样才能点击这里而不转换?”){} NavigationLink(目标:ContentView()){ 垫片() } } } } } } 您的按钮不应为默认样式 下

如果行视图中还有一个NavigationLink,则除了导航之外,我无法选择行。UIKit没有问题。这是因为目前缺乏实现而不可能的,仅仅是一个bug,还是事实上目前是可能的

这可能是能够说明问题的最简单的片段

struct ContentView:View{
var body:一些观点{
导航视图{
名单{
HStack{
按钮(“我怎样才能点击这里而不转换?”){}
NavigationLink(目标:ContentView()){
垫片()
}
}
}
}
}
}

您的按钮不应为默认样式

下面是一个可能的方法的简单演示。使用Xcode 11.7/iOS 13.7进行准备和测试


我不知道这是一个错误还是按照设计。作为一种解决方法,您可以使用
文本(“我的按钮”).tapAction{…}
。不幸的是,你会松开按钮的样式,所以你可能需要创建自己的自定义按钮。我也很想知道这一点。这似乎是可能的,因为在watchOS上苹果的训练应用程序中,每行都有一个带省略号图像的按钮,用于引导训练设置,而整行开始训练。我忘记了我有这个问题,直到今天得到了奖励。我已经发现了这一点,在这里:。(它也适用于今年的测试版软件。)但这只是方法。不是为什么!
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)
                    }
                }
            }
        }
    }
}