分享

判断tableviewcell在可视区域的几种方法 | iOS开发讨论区

 quasiceo 2015-04-02

判断tableviewcell在可视区域的几种方法   

1.  - (NSArray*)visibleCells;
UITableview的方法,这个最直接,返回一个UITableviewcell的数组。
对于自定制的cell,之后的处理可能稍微繁琐些。


2.- (NSArray*)indexPathsForVisibleRows;
UITableview的又一个方法,这个比较好用了,返回一个NSIndexPath的数组,可以直接用indexpath.row去调你的table_related_Array里的数据了。比较方便用于自定制的cell。


3.- (CGRect)rectForRowAtIndexPath:(NSIndexPath*)indexPath;


CGRect cellR = [myTV rectForRowAtIndexPath:indx];


如果  myTV.contentOffset.y - cellR.origin.y < myCell.frame.size.height
或者  cellR.origin.y - myTV.contentOffset.y >myTV.size.height


这个时候myCell应该是不在myTV的可视区域了。
这个方法可以用在代理回调较多的设计中。


另:
1和2在自动根据数据伸长的cell中好像不太准确。



不會讓你輸,只會讓你服~~~

级别: 侠客
UID: 37997
精华: 0
发帖: 79
可可豆: 772 CB
威望: 772 点
在线时间: 290(时)
注册时间: 2010-11-13
最后登录: 2015-01-23
沙发 : 发表于: 2011-03-03 15:58    发自: Web Page
学习了   谢谢模子兄  

级别: 精灵王

UID: 30808
精华: 1
发帖: 672
可可豆: 5696 CB
威望: 5696 点
在线时间: 751(时)
注册时间: 2010-09-15
最后登录: 2015-04-01
板凳 : 发表于: 2011-03-03 16:06    发自: Web Page
学习了 太棒了
不学不行啊!!

级别: 圣骑士
状态: 未签到 - [1天]
UID: 15473
精华: 0
发帖: 376
可可豆: 2171 CB
威望: 3701 点
在线时间: 1333(时)
注册时间: 2010-03-15
最后登录: 2015-04-01
3 楼:  发表于: 2011-03-03 17:39    发自: Web Page
回 楼主(evangel) 的帖子

         下午刚刚碰到这个。每个cell开始加载一个等待图片,后台下载真正加载的图片,完毕后回主线程通过indexpath找到cell替换图片。出现个很奇怪奇怪的问题。
         每次,刚打开打时候。总是有几个当前显示打cell不能更新图片。滑动后就可以了。跟踪了一下。发现visibleCells非常古怪。明明显示的是6个cell,但返回的visibleCells却只有一个或几个,而不是全部的。后来无奈做了个等待。取cell的时候如果取不到就一直取,直到取到。然后问题解决了,也没感觉明显的拖慢。
       问题虽然解决了,但原因却不是很清楚,对tableview的加载机理也不是很清楚。恳请楼主讲解一下。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多