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

时间:2011-12-16 18:39:49

标签: ios uitableview uiview lazy-loading

所以,我目前有一个GridView类,它本质上就是这样。它是UIView的一个子类,它有一个暂存区域,其中有一堆子视图以类似网格的方式放置。目前我将GridView放入nib中的UIScrollView。加载GridView时,它必须一次加载所有子视图,甚至是那些不可见的子视图。

例如,如果我有一个包含5列和500行的网格,它将同时加载所有2500个视图,如您所想,这需要很长时间。我想实现它,以便它只加载可见的视图,并在用户滚动时加载新视图。这类似于UITableView加载其单元格的方式。

我认为它将遵循与UITableView相同的模式,但我不太清楚如何开始。任何人有任何指针/提示?

提前致谢

1 个答案:

答案 0 :(得分:1)

您知道每个网格单元的大小。我假设您正在实现UIScrollViewDelegate方法,因此您可以在滚动时收到消息。因此,一旦收到-(void)scrollViewDidScroll:(UIScrollView *)消息,计算可见单元格,并加载视图中的单元格。

更好的是,就像在UITableView中一样,回收您的单元格视图。当细胞离开视野(顶部或底部)时,使用视野外的细胞进入视野。

查看UITableView类的ivars和方法,并考虑模仿该行为和实现。