Ios 如何检测UITableView中哪个部分可见?

Ios 如何检测UITableView中哪个部分可见?,ios,uitableview,Ios,Uitableview,我试图通过使用indexPathsForVisibleRows来检测哪个部分是可见的,如下所示: -(BOOL)isRowZeroVisible { NSArray *visibleRowIndexes = [self.agendaTable indexPathsForVisibleRows]; for (NSIndexPath *index in visibleRowIndexes) { NSLog(@"The visible row has an index

我试图通过使用
indexPathsForVisibleRows
来检测哪个部分是可见的,如下所示:

-(BOOL)isRowZeroVisible {
    NSArray *visibleRowIndexes = [self.agendaTable indexPathsForVisibleRows];
    for (NSIndexPath *index in visibleRowIndexes) {

        NSLog(@"The visible row has an index of: %ld", (long)index.row);

        if (index.row == 0) {
            NSLog(@"index.row is indeed 0");
            return YES;
        }
    }

    return NO;
}

然而,这似乎不起作用,我不明白为什么。是否有其他方法可以使用其索引检测可见部分?

除了方法实际上从未被调用之外,您必须将其调用放在正确的位置。有几个地方可能是正确的:

  • -tableView:didendisplayingcell:forRowAtIndexPath:
  • -tableView:willDisplayCell:forRowAtIndexPath:
或者如我在评论中所写:
-tableView:cellforrowatinexpath:

最好的选择可能是前面两种方法的组合,因为如果0单元被删除或添加,它们将通知您。对于第三种选择,情况并非如此


此外,如果要检查某个节或某个特定行,您可能需要弄清楚,因为文本和代码之间不匹配。

以什么方式不起作用?当它应该返回true时,它不返回true吗?反之亦然?代码在第一次查看时实际上看起来是正确的try
index.section
@luk2302它没有记录任何内容,这告诉我函数根本没有运行,但不知道为什么。是否尝试添加更多日志?一个在方法的开始,只是为了检查它是否被调用,一个在indexPatchsFor。。。记录返回路径的计数以检查它们是否为空,等等。当然,为什么要连续记录?调用cellforrowatinexpath中的函数,您应该会没事的。