构建应用程序以在单个 UITableView 中显示两个列表的最佳方法是啥(在数据集之间切换)

Posted

技术标签:

【中文标题】构建应用程序以在单个 UITableView 中显示两个列表的最佳方法是啥(在数据集之间切换)【英文标题】:What's the best way of building an app to display two lists in a single UITableView (switching between datasets)构建应用程序以在单个 UITableView 中显示两个列表的最佳方法是什么(在数据集之间切换) 【发布时间】:2011-01-17 18:28:53 【问题描述】:

我对 ios 开发还比较陌生,我只是想了解一下什么是最好的方法。我正在构建一个带有选项卡栏的应用程序,其中一个选项卡将是一个表格视图,其顶部是一个带有两个按钮的分段控件,允许您在数据集之间进行交换。

我的第一个问题是:

数据相对简单,但大约有 6000 条记录,最好使用简单的 NSDictionary 作为数据源,或者我应该考虑使用 Core Data。该应用程序的用户只需选择一条记录即可将其添加到收藏夹列表中,或取消选择它。

其次:

我应该使用两个不同的视图控制器并根据选择的选项将它们换入和换出,还是应该使用单个视图控制器并交换该类中的数据以填充表格。

我是一名注册的 Apple 开发人员,因此我可以访问他们的示例,但通常会发现它们难以理解,非常感谢任何指向资源/教程的指针。

【问题讨论】:

【参考方案1】:

首先,对于任何重要的事情,请始终考虑 Core Data - 在您的情况下尤其如此。包含 6000 个对象的字典很容易变得难以管理。

至于视图控制器,我认为规范的做法是使用单个表视图控制器(因为您仍然在单个 UITabBarController 选项卡上),但更改其数据源,或仅更改从该控制器返回的数据来源。

如果你需要它看起来相当流畅,你可以使用内置的 UITableView 动画方法 - 我相信 AP 应用程序改变了它的新闻故事,通过动画去除所有旧故事并在所有新故事中添加动画单表视图,因此效果是完整的数据集更改,但没有额外的视图控制器。

一般来说,我发现 Apple 示例和教程是最好的,但没有什么可以替代只是构建应用程序和自己使用技术 - 如果您不理解示例,请尝试自己重新实现它并看看是什么给你带来了麻烦。如果你真的被某件事困住了,请回来再问一个问题!

【讨论】:

谢谢蒂姆,我有一个可以这样工作的版本(使用 NSDictionary),但我只是想确定一下。我将开始使用 Core Data,然后尝试让它发挥作用。【参考方案2】:

第一个问题:

如果您的数据集相当简单,我建议您使用字典数组;或者,如果 order 定义明确,并且每一行都有一个有意义的唯一键,则只需使用字典。

使用像 Core Data 这样的大型框架需要权衡复杂性,并且在您拥有(例如)在对象模型中表达的关系之前,我认为这种权衡是不值得的。

也就是说,在做出此类决定时需要考虑性能问题。您有 6,000 条记录,但每条记录都只是一个键和一个值吗?这没什么大不了的。但是如果你有很多列,并且排序是一个问题,Core Data 的 SQLite 后端会帮到你很多。

如果数组或字典中填充了标准的 Foundation 数据类型,您将免费获得 serialization,因为它们都实现了 NSCoding。

第二个问题:

阅读 Apple 的 article on the model-view-controller design paradigm。关于您在这里尝试做的事情需要注意的是,由于您只是想改变您的数据,因此只有您的模型应该改变。

UITableView 旨在让这一切变得简单。它是一个视图,因此它不存储其数据,但它有一个 dataSource 属性,它查询该属性以显示信息。因此,当您的用户切换数据集时,只需切换表格视图的数据源即可。

【讨论】:

以上是关于构建应用程序以在单个 UITableView 中显示两个列表的最佳方法是啥(在数据集之间切换)的主要内容,如果未能解决你的问题,请参考以下文章

在 terraform 模块中显式使用提供程序

带有单个自定义单元格的 UITableView? (苹果手机)

文档/库实现拉取以在 UICollectionView/ UITableView 中显示更多菜单选项

如何在 swift 2.0 中提取 JSON 数据以在 UITableView 中动态应用?

UITableView 在部分中添加按钮

向上滑动以在 UITableView 中显示按钮?