【发布时间】:2009-06-15 14:44:09
【问题描述】:
我有一个启用 paging 的 UITableView。每个单元格占据表格的查看区域。意思是,每个单元格与表格的高度和宽度相同。我正在使用具有 name 属性的自定义单元格。我想在标签中显示当前(可查看)单元格的名称。这适用于第一个和最后一个单元格,但中间的任何事情都不是那么容易。问题是 cellForRowAtIndexPath 为这些中间单元调用了两次。这是从第一个单元格滚动到最后一个单元格然后返回的样子。当 cellForRowAtIndexPath 触发该行时,我已经按顺序列出了索引:
Row indexPath.row
0 0 //view loads and table appears
1 1,2 //user scrolls to second cell. cellForRowAtIndexPath fires twice. First time indexPath.row is one and second time it is two. This causes cell two's name to display in the label, rather than cell one.
2 2,3
3 3
//user starts scrolling back to first cell
2 1,2
1 1,0
0 0
我可以设置使用 NSDate 对象来检测我是否在中间行。通过将上一次与当前时间进行比较,我会知道。但是,如果用户在单元格中滚动的速度非常快,那可能就行不通了。还有其他方法吗?
我尝试过使用多种可见单元格属性,但没有奏效。 UITableView 将加载下一个单元格,即使它不可见,也会使其成为可见单元格的一部分。
【问题讨论】:
标签: iphone cocoa-touch uitableview