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
,然后重新加载更多数据。