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 中制作分页的 ScrollView?