点击列表项时如何显示视图?

Posted

技术标签:

【中文标题】点击列表项时如何显示视图?【英文标题】:How to show a view when tapping on a list item? 【发布时间】:2019-12-18 15:52:08 【问题描述】:

我正在使用 SwiftUI 中的列表,我正在尝试重新创建一个使用 TableView 的系统,用户可以点击一个单元格,然后显示一个新视图,其中包含与所述单元格相关的数据。现在我们列出了我的代码已更改为以下内容:

                        List 
                            ForEach(clients, id: \.id)  client in
                                VStack(alignment: .center) 
                                    HStack
                                        Text(client.firstName ?? "Unknown" + " ")
                                            .font(.system(size: 17))
                                            .foregroundColor(Color.init(hex: "47535B"))
                                            .fontWeight(.medium)
                                            .multilineTextAlignment(.leading)
                                            .padding(.leading)
                                        Text(client.lastName ?? "Unknown")
                                            .font(.system(size: 17))
                                            .foregroundColor(Color.init(hex: "47535B"))
                                            .fontWeight(.medium)
                                            .multilineTextAlignment(.leading)
                                        Spacer()
                                    
                                
                                .frame(height: 50.0)
                                .background(Color.init(hex: "F6F6F6"))
                                .cornerRadius(7.0)
                            
                        
                        .padding(.horizontal, 3.0)
                        .padding(.vertical, 115.0)
                        .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)

我意识到我可以使用 NavigationLink 并将整个内容放入 NavigationView 中,但这个功能不是我想要的,下面是我的界面图像。我想要实现的是,当用户点击一个单元格时,它会在右侧的空间中显示数据,其中显示“选择一个客户以查看他们的个人资料”。使用 NavigationView 设置,我只能使用两种默认样式,这两种样式都不适合我,因为我无法自定义导航视图的放置位置。有没有一种方法可以注册同一个水龙头,但有我自己的自定义系统来在我的界面中显示我想要的结果数据?也许我对 NavigationView 有误,或者有办法让 NavigationView 完全位于包含项目列表的视图之外?

【问题讨论】:

【参考方案1】:

如果您不想或不使用 NavigationView,那么您可能在某个视图中同时拥有客户端列表和客户端详细信息。我会尝试将@State private var selectedClient: Client? = nil 添加到具有列表和详细信息的任何视图中。

首先,将selectedClient 作为绑定传递给列表。接下来,只要点击列表项之一(可通过.onTapGesture()Button 实现),更新selectedClient

在您的详细视图中,接受一个可绑定的Client? 参数。如果是nil,则只显示您当前的文本视图。如果不为零,则构建详细 UI。

希望这会有所帮助!

【讨论】:

以上是关于点击列表项时如何显示视图?的主要内容,如果未能解决你的问题,请参考以下文章

当“点击”列表项时在 Sencha Touch 中创建操作表

如何从json获取数据中对两个或多个值求和

为啥我无法显示已单击列表视图?如何让展示成为可能?

searchController 在单击搜索项时消失

如何在 Worklight 中使用 cordovaWebview?

检查时如何在列表视图中删除文本项?