UITableview 根据所选单元格显示不同的数据

Posted

技术标签:

【中文标题】UITableview 根据所选单元格显示不同的数据【英文标题】:UITableview show different data based on cell selected 【发布时间】:2017-03-10 17:46:07 【问题描述】:

在我正在设计的应用中,这是我想要实现的目标:

    一个主视图,其中只有 3 个项目,“待办事项”、“购物清单”、“笔记”。

    详细视图基于在主视图中选择的项目,显示不同的数据集。这是一个 UITableView。

    从主视图到细节视图的过渡是使用segue,更像是主视图是一个前视图,一旦选择了一个项目,就会调用一个segue来过渡到细节UITableView。

我的问题是:

    对于主视图,我应该使用只有 3 个单元格的 UITableView 并禁用滚动吗?还是应该使用带有 3 个按钮的 UIView? 如何根据主视图中的选择在详细视图中显示不同的数据集?例如。如果用户选择了“待办事项”,那么详细视图应该显示待办事项列表;如果使用选择了“购物清单”,则显示购物清单中的数据。

非常感谢您提供示例或链接。更新: 我打算使用 NSUserDefault 来存储数据,因为 to-do list 和 shopping list 相对来说是非常轻量级的。将来,如果需要,我会考虑使用firebaseiCloud 进行备份和同步。

【问题讨论】:

请显示您编写的代码,以及您遇到的问题。请看How to Ask 您可以使用段控制 - developer.apple.com/reference/uikit/uisegmentedcontrol。其余的您可能需要使用诸如核心数据或领域之类的数据库后端来查看。 @AshleyMills 这个问题不要求任何类型的场外资源。这不是这个问题的适当关闭原因。 是的,重新阅读它,你是对的。抱歉,@f_qi @AshleyMills 没问题。 【参考方案1】:

问题 1:您可以选择其中任何一种,但只使用 3 个按钮创建 UIView 会更容易。 问题 2:最好的方法是使用present segue。将 3 UITableViewController 作为主视图中 3 个按钮的详细视图。然后从每个按钮拖动到其各自的tableViewController 并选择present。给每个segue 一个身份。然后,在您的主视图中,在prepareForSegue 中,创建三个if statements 检查segue.identifier == "buttonSegueIdentifier"。在每个 if 语句中,执行必要的任务。最后,当每个按钮被点击时,调用prepareForSegue

【讨论】:

这是正确的答案,但我认为将其分解为一些实际的代码块可能会对 OP 有所帮助。【参考方案2】:

问题 1:正如 Gabe 所说,两者都可以,但只使用三个按钮可能更简单。

问题 2:处理显示不同数据的视图控制器的最佳方法是使用不同的视图控制器。为您拥有的每个类别使用一个视图控制器。使用导航控制器创建视图控制器之间的转换。从按钮到细节视图,创建show segues。考虑一个这样设置的故事板:

【讨论】:

【参考方案3】:

Here 是我找到的解决我的问题的解决方案。

【讨论】:

以上是关于UITableview 根据所选单元格显示不同的数据的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableView 中突出显示所选单元格的边框

ios 7 uitableview 所选单元格在 beginupdates 后失去边框

分层 UITableview

在 iOS 中重新加载特定的 UITableView 单元格

根据所选的 indexpath.row 更改 UICollectionView 单元格图像视图

UITableView 中的奇怪行为 - 一个单元格显示不同