Ios 目标C:如何实现datagrid视图(具有多列的表)

Ios 目标C:如何实现datagrid视图(具有多列的表),ios,objective-c,uitableview,Ios,Objective C,Uitableview,我目前正在开发一款iPad应用程序,它使用一个表视图来显示数据,我的灵感来自iPad上的iTunes应用程序,它以一种非常漂亮和整洁的方式将数据显示在多个列中,最有趣的是,在纵向模式下,itunes应用程序以2列显示数据,但当用户切换到横向模式时,它会将显示切换到3列,因为有足够的空间水平显示数据 这就是我要说的: 但我发现iOS SDK只支持tableview的单列,最好利用iPad屏幕上提供的整个空间来显示数据,我做了一些研究,发现以多列方式显示数据的最好方法是使用datagridview,

我目前正在开发一款iPad应用程序,它使用一个表视图来显示数据,我的灵感来自iPad上的iTunes应用程序,它以一种非常漂亮和整洁的方式将数据显示在多个列中,最有趣的是,在纵向模式下,itunes应用程序以2列显示数据,但当用户切换到横向模式时,它会将显示切换到3列,因为有足够的空间水平显示数据

这就是我要说的:

但我发现iOS SDK只支持tableview的单列,最好利用iPad屏幕上提供的整个空间来显示数据,我做了一些研究,发现以多列方式显示数据的最好方法是使用datagridview,但iOS SDK没有为iOS开发者提供任何数据网格视图控件

我在互联网上发现了一些定制的表格,如:

AQGridView。 DTGridView。 还有这个: 而这其中的一个: 但遗憾的是,这些都不能满足我正在开发的应用程序的要求


你们能给我提供一些想法或分享一些示例代码或链接,说明如何在数据网格视图中显示数据,以实现类似于上面所示的iTunes应用程序中使用的效果。。任何形式的帮助都将不胜感激。谢谢你们

总结答案是,在一个单元格中放置多个数据视图

更详细的答案是:

创建表示所需单个单元格的自定义视图。为此,您可以使它们的大小足够大,可以跨两个或三个单元格工作。它们将加载到单元格边界的1/2或1/3中

然后创建一个自定义UITableView单元格,该单元格可以容纳两个或三个数据项—加载以前在单元格中为每个数据项创建的自定义视图的实例,并将它们彼此相邻放置。添加数据项组时,可以让单元格进行视图布局

在表delegate/datasource中的cellForRow代码中,您可以将数据源分成两个或三个组使用,并相应地报告行数以传递给自定义单元格


很抱歉,我无法共享代码,但我以前在其他应用程序中使用过此技术

创建一个UIView类来表示单个单元格,再创建一个在网格中显示这些单元格数组的UIView类有什么不对?将网格视图放在UIScrollView中,就可以完成了

UITableView显然是一个相当复杂的类。这在很大程度上是为了使它非常通用,非常可重用,并且能够支持大量的行。您的类不一定需要那么复杂-如果您的单元格数量相当少,那么您的网格实际上可能只是一个UIView,您可以在其中按行和列排列单元格。UITableView删除看不见的单元格以节省内存;如果你有数百个细胞,你可能需要做类似的事情,特别是如果它们很大,但是几十个可能不需要


简而言之,由于特定用途需要网格视图,因此不需要为通用的、可重用的解决方案做所有额外的工作。

源代码可用于您提到的所有四种实现。你有哪些问题没有得到其中一个答案?这些不符合哪些要求?你能具体告诉我们你不知道怎么做吗,或者我们应该开始猜测吗?你提到的是一个非常完整的选项列表,你会发现。苹果使用HTML/Javascript对应用商店页面进行格式化。就像@Caleb建议的,你们能详细说明你们的问题吗?我的问题是:我必须在表格上显示数据,数据包括图像、标签、文本和按钮,正如你们在上面看到的一样。如果我使用表视图,它只支持单列。。我需要在多个栏中显示我的数据,以便能够利用iPad屏幕上提供的空间。在我搜索的AQGridView上,它有缺陷,并且只关注显示图像。。在DTGridView上,他们没有提供如何实现它的详细信息,就像AQGridView一样,它也有一些错误,比如滚动时丢失数据,在上,我找不到它的任何源代码,它说不可用,最后一个问题是:只在简单的单列中显示它的数据..总结一下,我的问题很简单,您是否可以自定义表视图,使其看起来像datagrid?它可以支持纵向和横向模式,也可以在纵向上显示三列,然后在横向模式下将它们分为四列谢谢各位。谢谢你们的回答,因为我从WCF JSON web service?获取数据,每次用户切换方向时,是否会有问题,图像将被下载并重新加载?如果你不能分享密码,我理解,但是
你能不能至少提供一些屏幕截图,看看会是什么样子?就像在你的应用程序中一样,让我对如何做你刚才说的事情有更广泛的想法和观点。我不能真正提供屏幕截图,因为除了定义单元格视图外,大部分工作都是在代码中完成的。想象一下,在您的屏幕截图中,每个项目都是IB中定义的视图的一个实例。要从服务下载数据,通常需要将数据下载到一个数组中,并根据数组中的任何内容创建表-因此用户滚动时不需要重新下载。如果某些数据太大,无法一次下载整个表格,请下载足够多的数据,以了解表格中有多少项,并让每个单元格在短暂延迟后开始下载项目。@JordanRodriguez-在表格视图中,用户可能倾向于只下载一个屏幕中的内容,外加一点额外内容,然后在滚动时按需下载。这意味着您有时会在单元格中看到加载图标/消息,当然,代码会更复杂,但显示第一个屏幕的初始延迟会最小化。是的,但您必须下载至少足够的元数据,以了解表中可能包含的单元格数……是的,您需要知道有多少个单元格,或者至少当有更多的时候——你可以在适当的歌舞之后根据需要调整行数。但是知道实际数量更好。表视图的优点是可以自动为您管理大型列表。这是为开发人员增加的工作,但为大型表节省了存储空间。对于最大行数可能为25-100行的表,尽管滚动视图可能是更好的选择,但它也取决于是否需要水平滚动。如果网格比屏幕宽,滚动您自己的视图可能比尝试调整UITableView更容易。这是真的,尽管原始问题似乎不涉及二维滚动。@热点击相反-图像中的箭头和页面指示器给人的印象是您只能水平滚动,这在各种应用商店界面中都是常见的情况。这仍然只是一维滚动,我很确定,如果你张着嘴的话,你可以用表格视图来实现。