从同一类中的两个不同NSMutableArrays填充两个NSTableView

时间:2011-05-28 11:47:02

标签: cocoa object nsmutablearray nstableview

我很难在一个Class中使用来自两个不同MutableArrays的数据填充两个TableView。我正在解析* .xml文档,并希望将数据放入不同的tableview。在“表视图编程指南”的“使用表数据源”一章中,它指出“管理多组数据的数据源对象可以根据NSTableView对象发送消息来选择适当的集合。”我理解这意味着我可以在同一个类中填充来自两个不同的mutablearray的两个不同的tableview。我似乎无法弄清楚如何做到这一点,因为除了上面引用的内容之外我找不到任何其他信息。

我的tableview人口代码是:

- (int)numberOfRowsInTableView:aTableView {  
    return [arrayPowerData count];  
}

- (id)tableView:aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)row {  
    PowerData* dataPower = [arrayPowerData objectAtIndex:row];
    return [dataPower valueForKey:[aTableColumn identifier]];  
}

我知道两个数组中都有数据,因为我可以在上面的代码中切换数组变量,并填充相应的tableview。

[blockTableView reloadData];  
[dataTableView reloadData];

我已尝试过Array Controller / Bindings路由,但即使我没有收到任何错误消息或警告,也不会填充TableView。

我是Cocoa / Objective-c编程的新手,根本不是程序员,因此,非常感谢任何帮助和/或指导。

1 个答案:

答案 0 :(得分:2)

基本上这里发生的是两个表在填充时调用这些函数。发生这种情况时,它们会将自己作为表视图参数aTableView传递给自己。因此,为了使用相同的方法填充两者,您需要过滤掉当前正在调用该方法的表视图。这是基本的想法:

- (int)numberOfRowsInTableView:aTableView {  
    if (aTableView == tableview1) {
        return [array1 count];
    }
    else if (aTableView == tableview2) {
        return [array2 count];
    }  
}

-(id)tableView:aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)row {  
    if (aTableView == tableview1) {
        //populate tableview1 with the corresponding array
    }
    else if (aTableView == tableview2) {
        //populate tableview2 with the other array
    }
}