0

让两个数据源填充一个 NSTableView 在逻辑上是否有意义?还是弹出按钮(能够选择读取哪个数据源)更合理?

如果我使用单个 NSTableView 选项,如果我将所有数据输入到单个数据源(例如 NSDictionary)然后填充表格,我会更好吗?我看到这个想法的唯一问题是完成表的选择后会发生什么。我将如何破译选择了哪个原始位置。

另一个突然出现在我脑海中的想法/潜在问题......如果我从数据源中获取数据并直接填充表格,如何在相关的 NSTableView 'count' 方法中给出表格的计数.. 将添加数据存储 1 和数据存储 2 的计数呢?

对不起,如果它有点混乱.. 感谢您的任何意见!

4

2 回答 2

2

您绝对可以使用多个数据源来将数据显示在表格视图中,但它们都必须通过单个控制器对象进行汇集,该控制器对象被分配为表格视图datasource并实现NSTableViewDatasource协议。

您必须在控制器对象中编写一些代码,以便跟踪组成的多个源数组,并为表视图提供项目数量和每个项目内容的适当值。

这是一个非常简单的例子:

- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
    return [array1 count] + [array2 count];
}

- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
    if(rowIndex >= [array1 count])
    {
        return [array2 objectAtIndex:rowIndex - [array1 count]];
    }
    else
    {
        return [array1 objectAtIndex:rowIndex];
    }
}

至于选择,您的控制器知道它从哪里获取数据,因此当用户选择特定行时,将该行索引转换为您的一个后备存储中的匹配对象应该是微不足道的。

于 2012-04-30T05:49:01.643 回答
1

根据您的应用程序逻辑,它可能是有意义的。最简单的方法是为每个表格部分设置不同的来源。然后,您可以使用节号作为数据库的选择器。

于 2012-04-30T05:31:16.170 回答