实现一个类似于 UITableView 将已创建的单元格出列的方式的系统

Posted

技术标签:

【中文标题】实现一个类似于 UITableView 将已创建的单元格出列的方式的系统【英文标题】:Implement a system similar to the way UITableView dequeues cells already created 【发布时间】:2011-01-01 23:03:26 【问题描述】:

我需要实现一个网格来在 iPad 上显示一些视图实体。 为了充分利用 SDK,我想我会使用 UITableView 来跟踪我的 行,然后实现某种枚举器以返回正确的列以放入我的单元格中。

枚举器运行良好。我只是将 tableViews viewController 传递给一维数组,然后枚举器将其拆分为“伪二维集”,但是,我想让网格对行和列都使用类似于 UITableViews 的方法:

[tableView dequeueReusableCellWithIdentifier:CellIdentifier];

现在我构建了每行所需的列视图数量,并将它们手动添加到cellForRowAtIndexPath:中的单元格中

我想做一个类似的方法:

columnsForRowAtIndexPath:

让它像cellForRowAtIndexPath..一样工作

所以问题是 tableView 如何避免一遍又一遍地初始化我的单元格,以及如何实现类似的行为?

-

我无法确定 tableView 是复制单元格还是使用 NSCoding 构建新单元格以以最小的开销返回单元格。 猜猜 NSMatrix 在 ios 中会很不错。

【问题讨论】:

似乎 NSMutableSet 是一个可能的起点,所以我想这并不涉及“魔法”:所有单元格都被分配、初始化和保留,永远不会超过一次。 【参考方案1】:

看起来您已经回答了自己的问题,但为了确认您的怀疑,通常您会首先尝试使用 [myCache anyObject]NSMutableSet 检索对象。如果您以这种方式成功检索对象,请确保将其从集合中移除,以免再次被抓取。另一方面,如果-anyObject 返回nil,那么缓存中没有足够的缓存对象来满足您的需要,因此您需要创建一个新对象(并确保在您使用时将其放回缓存中) '完成)。

这只是实现目标的一种方式。

有意义吗?

【讨论】:

感谢布拉德,这说明了如何处理它。在考虑了几个小时后,我确实得到了一些疑问。也许它是“冗余”的,因为 tableview 缓存了单元格,它也会缓存我放入其中的“水平”内容 - 所以也许更好的方法只是构建一些逻辑来计算我应该在 cellForRowAtIndexPath 中插入多少列和然后让 tableView 处理它。无论如何,我必须在 didSelectRowAtIndexPath 中做类似的事情来拉出正确的数据对象。认为我应该在实现 TableView Matrix 之前进行测试:)

以上是关于实现一个类似于 UITableView 将已创建的单元格出列的方式的系统的主要内容,如果未能解决你的问题,请参考以下文章

如何使用子视图的延迟/动态加载实现自定义 UIView,类似于 UITableView

如何实现类似于Mail的UITableView行动画

SwiftUI 中的 List 是不是复用类似于 UITableView 的单元格?

UITableView 滚动类似于 Frontback 应用

水平 UItableView ios 7

将已编译 Python 脚本的配置文件放在哪里?