2013-10-08 32 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