【问题标题】:Populating Two NSTableViews From Two Different NSMutableArrays In Same Class从同一类中的两个不同 NSMutableArrays 填充两个 NSTableView
【发布时间】:2011-05-28 11:47:02
【问题描述】:

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

我的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]];  
}

我知道两个数组中都有数据,因为我可以在上面的代码中切换数组变量并填充适当的表格视图。

[blockTableView reloadData];  
[dataTableView reloadData];

我尝试了 Array Controller / Bindings 路由,但 TableViews 没有被填充,即使我没有收到任何错误消息或警告。

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

【问题讨论】:

    标签: cocoa object nsmutablearray nstableview


    【解决方案1】:

    基本上这里发生的是两个表在填充时都调用了这些函数。发生这种情况时,它们会将自己作为表视图参数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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-27
      • 2011-09-20
      • 1970-01-01
      • 2011-08-10
      • 2020-09-03
      • 1970-01-01
      • 2021-03-22
      • 2020-10-14
      相关资源
      最近更新 更多