2013-06-21 72 views
4

NSTableView是我用來顯示數百萬條數據,由於超時而無法得到響應。如何知道我們到達了NSTableView的最後一行

所以我決定要響應的網頁說,1-100然後101-200等

所以我的問題就在這裏開始,我怎麼能知道我已經達到的tableView或單元結束是可見的說100排?

我不想實現Load More..樣的按鈕等

這個之後,我將發送新的範圍新的響應。


這裏是我到目前爲止已經試過:

試圖跟蹤滾動視圖,並通過服務調用獲得下一組數據。

* 它適用於老鼠標,但刷卡失敗。

+0

哎呀對不起,想我誤解你的問題 – Eugene

+0

你不應該擔心什麼,你行到達了。當你實現數據源時,你會被問到正確的行,根據哪些行是可見的。足夠讓你把它們放在緩存中。例如,如果行在緩存中,您只需返回它的值,那麼會詢問第50行,否則,您會從0到100([N-50,N + 50])中獲取行並將它們放入緩存中。 –

+0

@Eugene:好的。 –

回答

4

也許你可以滾動之後確定最後可見行,我有一個子類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 
+0

+1,是的,這幫助我得到最後一個可見的行。 –

+0

太棒了!這幫助了我。但我需要添加觀察者到tableView滾動對嗎? 'NSViewBoundsDidChangeNotification'?然後在通知中,我檢查'lastVisible row> = rowcount',然後重新載入更多數據。 – GoodSp33d

相關問題