iPhone:UITableVIew 的一些理解

本文深入探讨了UITableView结合下载线程优化的实现方式,并通过LazyTableImages示例展示如何利用SwiftUIDelegate特性提升用户体验。重点解析了在UITableView中处理图片加载时的重用机制、如何响应UIScrollView的滚动事件以及获取可见行的索引路径等关键点,旨在为开发者提供一种简洁高效的图片加载方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UITableVIew 用的不少,其重用机制还是有点迷惑。之前有用过SDWebImage和ASIHttpRequest,在于UITableView结合的时候总是出项一些问题。今天在看NSOperation文档的时候,看了苹果官方的demo:LazyTableImages,其中对于UITableView的操作让我豁然开朗,原来是我想的太复杂了....

结合该Demo,做个小总结:

1、在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;方法中先判断此时的UITableVIew是否被拖动或者处于惯性滑动的状态(tableView.dragging和tableView.decelerating:Bool类型),如果不是,则开启下载线程。由于重用机制的存在,只有屏幕上的cell才会被开启线程。(之前很痛恨这个重用机制,还专门写了篇博客来总结如何干掉这个机制,现在回想起来觉得自己too simple too naive 了尴尬


2、UITableView可以响应UIScrollView 的delegate,因为UITableView中就有一个ScrollView 。(得先声明:@interface RootViewController : UITableViewController <UIScrollViewDelegate>),

#pragma mark - (UIScrollViewDelegate)

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{

}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    
}

3、[self.tableView indexPathsForVisibleRows]; 这个参数也很有用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值