gpt4 book ai didi

iphone - 从 UITableView pagingEnabled 获取可见单元格

转载 作者:行者123 更新时间:2023-12-03 18:21:54 31 4
gpt4 key购买 nike

我有一个带有分页功能的 UITableView。每个单元格占据表格的查看区域。这意味着每个单元格的高度和宽度与表格相同。我正在使用具有名称属性的自定义单元格。我想在标签中显示当前(可查看)单元格的名称。这对于第一个和最后一个单元格来说效果很好,但是中间的任何单元格都不是那么容易。问题是,对于这些中间单元格,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 对象来检测我是否位于中间行。通过比较之前的时间和当前的时间,我就会知道。但是,如果用户在单元格中滚动得非常快,那么这可能不起作用。还有其他方法吗?

我尝试过使用visiblecells属性的变体,但是没有用。 UITableView 将加载下一个单元格,即使它不可见,使其成为可见单元格的一部分。

最佳答案

好吧,如果您从未找到解决方案,或者无论谁接下来遇到这个问题,我都会为您提供您正在寻找的答案。 UITableView 将为您提供您正在寻找的索引路径,然后 UITableView 将很乐意为您提供与这些索引路径匹配的单元格:

UITableView *tableView = self.tableView; // Or however you get your table view
NSArray *paths = [tableView indexPathsForVisibleRows];

// For getting the cells themselves
NSMutableSet *visibleCells = [[NSMutableSet alloc] init];

for (NSIndexPath *path in paths) {
[visibleCells addObject:[tableView cellForRowAtIndexPath:path]];
}

// Now visibleCells contains all of the cells you care about.

关于iphone - 从 UITableView pagingEnabled 获取可见单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/996515/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com