iphone - 尝试创建一个高度自定义的 TableView

标签 iphone ios objective-c xcode

我正在尝试制作自定义表格 View 。我有一个加载了 UIViews 的 UIScrollView 。我想重新创建表格 View 具有的可重用单元格功能。我想知道什么是做到这一点的好方法。

我在想,当 UIViews 滚出屏幕时,我会将它们从 subview 中删除,当我需要另一个时,我只需添加它。但是我不确定什么方法可能是最好的方法。

我可以检查 scrollViewDidScroll: 中的 View 位置,但我不确定这是否是反复检查的最佳选择。如果有人有任何建议或有用的提示,那就太棒了。

谢谢!

最佳答案

scrollViewDidScroll 不是理想选择的一个原因是您的 ScrollView 子类需要成为它自己的委托(delegate)。这将剥夺该类的用户成为委托(delegate)的机会(至少很容易)。

检查这一点的更好位置是重写layoutSubviews。是的,就像scrollViewDidScroll一样,它被多次调用!但如果您考虑一下,确定检测是否有任何 subview 已滚动的唯一方法是检查何时发生任何滚动。

所以关键是要尽可能高效地进行检查。我尝试的第一件事是快速枚举 subview ,询问由 contentOffset 转换的每个帧是否落在父 View 的范围内(使用 CGRectIntersectsRect )。如果没有,请将其添加到您的重用池中并将其从 super View 中删除。

关于iphone - 尝试创建一个高度自定义的 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18295407/

相关文章:

iphone - 在构建用于分发的应用程序时留下 NSLog 语句是否有任何危险?

ios - 在 iOS 中向 TableView 单元格添加虚线底部边框与文本随机重叠

ios - 核心数据 : No NSValueTransformer with class name XXX was found for attribute YYYY on entity ZZZZ

iphone - 将 iPad 应用程序转变为通用应用程序

iphone - willAnimateRotationToInterfaceOrientation 在各种设备上是否被调用

iphone - 启用 iTunes 文件共享时隐藏 Core Data sqlite 文件

ios - 如何修改 UITableView 中的标签

iphone - 更改 ios 应用程序的语言

objective-c - Objective-C 中的 typedef 枚举是什么?

ios - inputAccessoryView 与 UIAlertController 一起显示