ios - 在 SwiftUI 的列表行(TableviewCell)中单击按钮导航到详细 View

标签 ios swiftui swiftui-list swiftui-navigationlink swiftui-navigationview

我有带单元格的 List/TableView。现在每个单元格都包含有关给定项目的详细信息和一些按钮,如编辑项目、显示项目详细信息、显示给定项目的 subview 等。

现在,为了显示 Item 的详细信息,我尝试添加 NavigationLink,但现在如果有人点击该单元格的任何地方,它就会移动到详细信息屏幕。

我不想通过点击屏幕上的任何地方移动到详细信息屏幕,我只想在有人点击该单元格中的“显示详细信息”按钮时推送详细信息屏幕。

最佳答案

  1. navigationLink 上使用 .hidden() 修饰符来防止列表项捕获它的操作

  2. .buttonStyleautomatic 更改为 list item 上的 something 以防止它从捕获按钮 Action 。 (例如 borderless)

工作演示

struct ContentView: View {
    @State var selectedTag: Int?

    var body: some View {
        NavigationView {
            List(1...10, id: \.self) { id in
                HStack {
                    Text("Item \(id: id)")
                    Spacer()
                    
                    Button("Show detail") { selectedTag = id }
                    .background(link(id))
                }.buttonStyle(.borderless) /// 👈 ⚠️ on the item! **NOT** on the button!!!
            }
        }
    }
    
    func link(id: Int) -> some View {
        NavigationLink("",
            destination: Text("\(id) Selected"),
            tag: id,
            selection: $selectedTag
        ).hidden()
    }
}

关于ios - 在 SwiftUI 的列表行(TableviewCell)中单击按钮导航到详细 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72644330/

相关文章:

swift 我怎样才能让列表从顶部开始,没有填充

ios - 如何从 SwiftUI 列表和 Realm 中删除数据

ios - 如何在swift中通过NSManagedObjectContext更新核心日期中的对象?

ios - 解析查询在重启时返回 PFObject 而不是子类

swiftui - Xcode 13 SwiftUI 颜色文字丢失

ios - 没有 AppDelegate 的 SwiftUI 远程推送通知 - 有可能吗?

ios - 带有手势的 Scrollview 内的图像

ios - 将 NavigationBar 背景设置为纯色

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