2012-09-03 26 views
1

我遇到了一個問題,關於NSTableView,它是這樣的:tableview中的 一個數據源被稱爲:NSTableView的:只有numberOfRowsInTableView:數據源被稱爲

- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView 
{ 
    return [self.dataArray count]; 
} 

但是這一次不會被調用:

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 
{ 
    // the code 
} 

我已經檢查過該陣列真的有數據了,並且還檢查了 [NSTableView reloadData]在主線程中被調用。

所以我完全失去了這個奇怪的問題。 會有人提供一些提示嗎? 謝謝!

+0

你使用基於視圖的表視圖嗎? – Samir

+0

您是否檢查過是否通知.h文件中的委託和日期源方法,並將.xib文件中的tableView的數據源插座連接到您的類 –

+0

您是否記錄了[self.dataArray count]以檢查它沒有返回0 ?此外,您的表格單元格還是基於視圖? – rdelmar

回答

2

我將awakeFromNib的初始代碼移至init,並且它調用正確。但我仍然不知道真正的原因。我想這與視圖的生命週期有關係,因爲具有tableview的類是NSObject的子類,而不是NSViewController

+0

我的問題是我填充數組之前調用「setDataSource:self」,因此我的應用程序在它有任何事情之前調用「numberOfRowsInTable」!簡單地移動「setDataSource:self」(現在是我的「awakeFromNib」中的最後一件事就解決了這個問題)。在「awakeFromNib」之前調用「init」(前者在創建對象時調用,後者在nib加載時調用)。這可能是爲什麼這對你有用。同樣的事情,只需在設置數據源之前填充數組! –

相關問題