SwiftUI - 有没有办法在没有 NavigationView 的情况下构建动态列表视图?

Posted

技术标签:

【中文标题】SwiftUI - 有没有办法在没有 NavigationView 的情况下构建动态列表视图?【英文标题】:SwiftUI - Is there any way to build a dynamic list view without NavigationView? 【发布时间】:2019-10-30 06:32:11 【问题描述】:

(添加示例代码)

我正在尝试使用 SwiftUI 来构建一个可选列表,就像 Swift 中的原始 Tableview 一样。

我想在选定项目上的用户选项卡时显示详细视图。但是,我发现实现它的唯一方法是使用 NavigationView 和 NavigationLink。

有谁知道还有其他方法可以通过 SwiftUI 实现可选列表吗?

下面是我实现的示例:

NavigationView

    List

        ForEach(items, id: \.id) item in 

            NavigationLink(destination: WorkItemDetailView(item: item))

                WorkItemListRow(item: item)
            
        
    

WorkItemListRow 是在列表的单元格中呈现对象。 WorkItemDetailView 是详细视图,会显示对象的详细信息。

【问题讨论】:

为什么不能使用 NavigationView 和 NavigationLink? @LuLuGaGa 抱歉没有把我的问题说清楚。我可以使用 NavigationView 和 NavigationLink,但我想知道是否有其他方法可以实现列表视图。 如果您只是不喜欢带有导航栏的布局,也许这会有所帮助:***.com/questions/57517803/… @cbjeukendrup 谢谢。虽然这不是我想要的,但它对我仍然有帮助。 【参考方案1】:

您也可以使用模态演示:

@State var selectedItem: Item? = nil

var body: some View 
    List 
        ForEach(items)  item in
            WorkItemListRow(item: item)
                .onTapGesture 
                    self.selectedItem = item
                
        
       .sheet(item: $selectedItem,
               onDismiss:  self.selectedItem = nil )  item in
                    WorkItemDetailView(item: item)
               
    

【讨论】:

非常感谢!这真是一个很好的例子!我也会尝试其他方式。 这救了我!!【参考方案2】:

我认为最好提供源代码,无论如何根据您的问题,您已经建立了一个tableview,但只是想转到另一个包含tableview中所选项目详细信息的页面。

你可以用这个:

  func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
            let vc = ViewController()
            self.present(vc, animated: true, completion: nil)


【讨论】:

这个答案使用 UIKit 而不是 OP 要求的 SwiftUI。 @rog 感谢您调整我,我已经提供了示例代码。另外,感谢您提供解决方案,但我正在寻找 SwiftUI 解决方案。

以上是关于SwiftUI - 有没有办法在没有 NavigationView 的情况下构建动态列表视图?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 有没有办法在没有 NavigationView 的情况下构建动态列表视图?

有没有办法为 SwiftUI 菜单使用 .displayInline 选项?

有没有办法在 SwiftUI 中创建一个新的手势?

有没有办法在 SwiftUI 中制作分页的 ScrollView?

SwiftUI:有没有办法创建一个单选列表(比如在 iOS 设置中)?

Swiftui 有没有办法改变按钮的可点击区域