Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何知道我们到达了NSTableView的最后一行_Objective C_Macos_Cocoa_Nstableview - Fatal编程技术网

Objective c 如何知道我们到达了NSTableView的最后一行

Objective c 如何知道我们到达了NSTableView的最后一行,objective-c,macos,cocoa,nstableview,Objective C,Macos,Cocoa,Nstableview,NSTableView是我用来显示数百万数据的工具,由于超时,我无法得到响应 所以我决定在页面中得到回应,比如说1-100,然后是101-200等等 所以我的问题从这里开始,我怎么知道我已经到达了tableView的末尾或者单元格是可见的,比如说第100行 我不想实现加载更多..类按钮等 在此之后,我将发送一个带有新范围的新响应 以下是我迄今为止所尝试的: 试图通过服务调用跟踪scrollView并获取下一组数据 *它适用于旧鼠标,但滑动失败。也许您可以确定滚动后最后可见的行,我有一个使用此方

NSTableView
是我用来显示数百万数据的工具,由于超时,我无法得到响应

所以我决定在页面中得到回应,比如说1-100,然后是101-200等等

所以我的问题从这里开始,我怎么知道我已经到达了tableView的末尾或者单元格是可见的,比如说第100行

我不想实现
加载更多..
类按钮等

在此之后,我将发送一个带有新范围的新响应


以下是我迄今为止所尝试的:

试图通过服务调用跟踪scrollView并获取下一组数据


*它适用于旧鼠标,但滑动失败。

也许您可以确定滚动后最后可见的行,我有一个使用此方法的子类NSTableView

@interface MyTableView : NSTableView
- (NSInteger)lastVisibleRow;
@end


@implementation MyTableView
    - (NSInteger)lastVisibleRow {
        NSRect bounds = [[self superview] bounds];
        bounds.origin.y += bounds.size.height - 1;
        return [self rowAtPoint:bounds.origin];
    }

@end

哦,对不起,我想我误解了你的问题。你不应该担心你到了哪一排。当您实现数据源时,将根据哪些行是可见的,要求您输入正确的行。足够你把它们放进缓存了。例如,有人要求您输入第50行,如果该行在缓存中,您只需返回它的值,否则您将从0到100([N-50,N+50])提取行并将其放入缓存。@RamyAlZuhouri:我不希望不必要的数据提取。我希望仅当最后一行可见时才提取数据。这与Facebook和所有其他网站非常相似。另外,我不想实现
加载更多..
类按钮等。因此,您的目标是一种“无限滚动”UI,在到达视图末尾时,会将新行引入模型?@AnoopVaidya有什么建议吗!这对我有帮助。但我需要在tableView滚动条中添加观察者,对吗<代码>NSViewBoundsIDChangeNotification?然后在通知中检查
lastVisible row>=rowcount
,然后重新加载更多数据。