2012-11-20 60 views
0

我填寫我的NStableView與tableView控制器,它工作正常。我只想知道爲什麼每當用戶將鼠標懸停在表格視圖中的特定單元格上時,每次獲取數據(呈現在表單元格中)時,都會開始在控制檯中顯示數據。NStableView可可

我發現這個- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row每次調用和我堆棧跟蹤使用儀器和此方法需要大量的內存。

有沒有什麼辦法可以停止這種方法每次繪製數據。

+0

只是維持其觀察時手動 –

+0

我怎麼能以編程方式檢查用戶是否懸停在NSTableView的你的表視圖刷新標誌的答案嗎?每當我將curosr放在tableView上時,dataCellForTableColumn都會被調用。 – york

+0

你現在有工作嗎? –

回答

0

將委託-viewWillMoveToWindow添加到包含該表的視圖子類中。在這裏我使用了名爲reloadTableBOOLNSTrackingArea是你的問題

- (void) viewWillMoveToWindow:(NSWindow *)newWindow 
{ 
    // Setup a new tracking area when the view is added to the window. 
    NSTrackingArea* trackingArea = [[NSTrackingArea alloc] initWithRect:[yourTable frame] 
       options: (NSTrackingMouseEnteredAndExited | 
       NSTrackingActiveAlways|NSTrackingEnabledDuringMouseDrag) owner:self userInfo:nil]; 
    [self addTrackingArea:trackingArea]; 

} 

- (void) mouseEntered:(NSEvent*)theEvent { 
    reloadTable=YES; 
    NSLog(@"enter %@",theEvent); 

} 

- (void) mouseExited:(NSEvent*)theEvent { 

    reloadTable=YES; 

} 

然後用它在你的NSTableViewDataSource方法

+0

我在[self addTrackingArea:trackingArea]中收到錯誤;我應該使用[tableView addTrackingArea:trackingArea]; ? – york

+0

viewWillMoveToWindow不調用,我用NSViewController來顯示視圖。 – york

+0

抱歉BRO的viewWillMoveToWindow是一個的NSView方法所有上述方法在一個NSView子類實現 –

相關問題