iphone uitableview 还是 uiscrollview 更好?

Posted

技术标签:

【中文标题】iphone uitableview 还是 uiscrollview 更好?【英文标题】:iphone uitableview or uiscrollview better? 【发布时间】:2011-07-07 20:09:40 【问题描述】:

关于这里的负面评论,我将我的问题简化为小步骤

我有一个基于视图的应用程序,它与 Web 服务通信并接收 xml、解析 xml 并将其内容映射到适当的视图组件(例如,如果那是一个日期,则使用 datepicker 显示问题,如果问题有 2 个值,则使用分段控制,如果更多使用pickerview..etc),所以它是一个包含许多页面的动态问题。

1-App 接收 XML

2-解析 XML 并获取最新的未回答问题(每页可以有无限数量的问题),每个问题都需要根据问题类型使用文本框或选择器视图或分段控件提出,它也可能需要一些标签用于解释、验证警报和问题标签。每个问题和标签都应该有不同的字体和颜色,在 xml 中定义。

3- 用户回答页面中的所有问题并按下发送按钮。

4-Web 服务接收、检查答案并根据给出的答案发回要提出的新问题。

5-APP 接收新的 XML(每个 XML 包括整个状态,即所有以前回答的问题)并解析以找出最新的未回答问题。

6-用户再次回答并发送问题并等待下一组问题,直到没有问题要问

7-OR 用户可能想要返回并编辑前几页中的一些问题。但是如果他编辑了之前页面中的任何问题,那么在该页面之后回答的页面不再有效,因为服务器发送的每组问题都取决于之前回答的问题,所以它需要从 XML 中删除所有后面的问题并发回一个请求就像它是等待响应的最新页面一样。

问题:

1-我应该使用 UiScrollView 还是 TableView?以及这里的一般面向对象设计是什么

【问题讨论】:

【参考方案1】:

您可以使用其中的任何一个,具体取决于场景。默认情况下,tableView 提供了一个非常好的内存管理模型,但是使用 scrollView 你需要自己管理内存,管理意味着如果你在 scrollView 上放置了这么多 UI 元素,你的应用程序可能会开始收到内存警告,或者在最坏的情况下可能会崩溃。表格单元格的可重用性允许您在不超载内存的情况下放置更多内容,前提是您明智地使用它。您只需要处理自定义 tableView 单元格即可获得显示问题所需的视图。

【讨论】:

tnx 以及如何使用 UINavigationController ya NavigationController 将在返回之前的答案时为您提供很多帮助。它也会保存你最后一个 questionView 的最后一个状态。当用户重新提交答案时,您将向服务器重新发送答案并为用户获取新问题,这样您将自动获得覆盖最新视图问题答案的功能,因为用户现在必须回答它们再次。【参考方案2】:

如果你想在一个列表中有很多问题,而且它是一个未知数,你应该明确地使用 tableview。这样您的性能就会大大提高,并且编码会更容易。

【讨论】:

【参考方案3】:

您应该使用UINavigationController 并在其中的每个视图内部,使用UITableView 显示所有问题(即,在导航控制器上推送UITableViewController)。

导航控制器允许以自然的方式表示您描述的与服务器的交互,还允许返回一组问题(同时也使您返回的页面之后的任何页面都无效)。

【讨论】:

谢谢,我检查了 UINavigationController,它看起来最常用于有层次结构的菜单中,我的情况是页面中有一堆问题,页面底部有一个下一步和返回按钮,你觉得还是最好的选择吗? 我需要创建基于视图的应用程序还是基于导航的应用程序? 它不仅用于层次结构,还用于排序,就像在向导中一样,所以我认为还可以。你需要一个基于导航的应用程序。 这会自动支持我的第 7 步吗?浏览回功能?还是我需要/应该每次都为必要的问题集解析 xml? 是的,它会自动回到上一个视图,不需要做任何特殊的事情(视图在那里,等你回去)。如果您对此有更多疑问,最好收集它们并修改您的问题;不鼓励在 S.O. 上使用长 cmets

以上是关于iphone uitableview 还是 uiscrollview 更好?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iphone 中刷新 UITableView?

iPhone UITableView 从平面数组填充可变行部分

无法在 iPad UI 中更改 UITableView 的背景颜色

为啥我的 iPhone UITableView 原型单元格图像水平移动?

swift in UI test(测试UITableView中的单元格数)

UITableView 框架