2013-10-08 37 views
0

我有N行和兩列(column_A和column_B)的NSTableview。 我要上排自行車,我嘗試這樣:騎行在NSTableView行

IBOutlet id myTableView; 

NSTableColumn *column_A = [myTableView tableColumnWithIdentifier:@"A"]; 
NSTableColumn *column_B = [myTableView tableColumnWithIdentifier:@"B"]; 
int nr = [myTableView numberOfRows]; 
for (int i = 0; i<nr; i++) { 
    NSString *a = [[column_A dataCellForRow:i] stringValue]; 
    NSString *b = [[column_B dataCellForRow:i] stringValue]; 
    ... (other code) 
    a = nil; 
    b = nil; 
} 

,但我得到相同的值,

對於i = 0,我收到了= TEST1和b = test2的

對於i = 1個I得到= TEST1和b = test2的

...

對於i = NR -1,我收到了= TEST1和b = test2的

錯誤在哪裏?

回答

0

-[NSTableColumn dataCellForRow:]返回原型用於顯示該列和行的值的單元格。這個原型單元格可以重複用於同一列中的多行,因此您不能依賴具有給定行中顯示的特定值。

一般來說,如果要列舉由表格視圖中示出的值,則遍歷其可以經由-[NSTableView dataSource]獲得其數據源的NSTableViewDataSource -conforming實例,或NSArrayController實例綁定到contents如果你是使用綁定。

如果由於某種原因您不能或不想使用數據源,則應該使用-[NSTableView preparedCellAtColumn:row:]來代替。此方法可確保爲單元填充給定列和行的數據源/內容值。

+0

非常感謝您的建議。我今天會嘗試preparedCellAtColumn方法,然後我會說你。 – user2724095

+0

@ user2724095爲什麼你不能使用數據源? – 2013-10-09 06:59:39

+0

一切都好,非常感謝。用preparedCellAtColumn方法是可以的。然後我嘗試使用dataSource。非常感謝你 – user2724095