iOS - 为帖子 + 评论数据模型设置视图控制器的最佳实践是啥?

Posted

技术标签:

【中文标题】iOS - 为帖子 + 评论数据模型设置视图控制器的最佳实践是啥?【英文标题】:iOS - What are best practices for view controller setup for a posts + comments data model?iOS - 为帖子 + 评论数据模型设置视图控制器的最佳实践是什么? 【发布时间】:2016-04-18 22:44:25 【问题描述】:

如果有人问过这个问题,请原谅,我找不到类似的问题。

所以我有一个显示帖子列表的应用程序,每个帖子都有一个 cmets 列表,与 Instagram 主页的布局方式非常相似。

当前实施

我实现它的方式是,我使用一个UITableViewController,并且我有一组帖子支持我的数据源。每个 post 对象都有自己的评论对象数组。在numberOfRowsInSection 中,我遍历posts 数组并将所有posts 和cmets 相加以获得总行数。我有两个UITableViewCell 模板,一个用于帖子,一个用于 cmets,在cellForRowAtIndexPathestimatedHeightForRowAtIndexPath 中(以及任何重要的功能)我必须做一堆逻辑才能获得正确的模型或查看给定的索引路径。

问题

此设置似乎工作正常,但很难调试和添加功能。特别是现在我正在尝试从服务器实现 Pusher 更新,我遇到了很多问题,即模型与视图的关系有多复杂,以及在更新视图之前更新模型需要多长时间。

我考虑过的替代实现

我开始阅读一些关于 UICollectonViews 的内容,并正在考虑使用补充视图来显示 cmets,并且只有帖子是常规单元格,但我不确定这是否真的是集合视图的工作方式,或者它是否会让这更容易。我还考虑过只为帖子 + cmets 使用一个单元格模板,根据需要动态向自身添加评论视图,但我什至不确定这是否可行。

问题

有没有更简单的方法来实现更适合数据布局方式的帖子+cmets 布局?这似乎是一个很常见的问题,已经被很多人解决了,所以我希望有人能指出一些最佳做法。

编辑:我的意思的一个例子。红色部分是帖子的评论部分,蓝色部分。不过,Instagram 似乎将每个帖子都设为一个部分,将海报的名称作为浮动标题,每个帖子都是它自己的部分,似乎更容易实现。我最初尝试以这种方式实现我的应用程序,但遇到了使部分标题比默认值大得多的问题,也许我应该改变我的设计以更好地适应部分?

【问题讨论】:

您想在同一个 tableview 中显示 cmets 和 post 吗?你能展示那个屏幕或一个例子吗? 【参考方案1】:

我猜您的主要问题是您为“子实体”使用了不同的单元格。因此,每次更新一个实体时都必须重新加载多个单元格。

选择表格视图还是集合视图并没有真正的区别。 (取决于布局,但我猜 Instagram 也是一个表格视图)

为了使您的视图处理更好/更容易,您应该创建一个处理实体所有属性的单元格。为了显示所有 cmets,您可能应该切换到新的视图控制器。或者您可以将一个部分用于一篇文章。所以你可以只重新加载一个部分。帖子可以是节标题,而 cmets 可以是节中的单元格。

因此您可以轻松访问您的单元格。表数据[节].commments[行]。然后,您可以在添加评论时在该部分中插入一个新行。

希望我能理解您的问题。

【讨论】:

是的,这正是我的问题。让每个帖子成为一个部分似乎是最好的解决方案。我开始实现它,我的代码中最糟糕的部分已经看起来好多了,不知道为什么我放弃了这种方法。

以上是关于iOS - 为帖子 + 评论数据模型设置视图控制器的最佳实践是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 cakephp 中为不同的模型设置不同的布局

在一个动作中渲染不同的视图

为recyclerview更新帖子的评论数

无法在模板中显示评论

iOS MVC - 如何将数据从模型传递到控制器?

如何在 Rails 视图中呈现所有评论?