gpt4 book ai didi

objective-c - 具有多个数据源的单个 NSTableView

转载 作者:行者123 更新时间:2023-12-03 17:35:34 25 4
gpt4 key购买 nike

让两个数据源填充一个 NSTableView 从逻辑上讲有意义吗?或者弹出按钮(能够选择从哪个数据源读取)会更合理吗?

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

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

抱歉,如果有点困惑......感谢您的任何意见!

最佳答案

您绝对可以使用多个数据源来在 TableView 中显示数据,但它们都必须通过一个 Controller 对象进行汇集,该 Controller 对象被分配为 TableView 的数据源并且实现NSTableViewDatasource 协议(protocol)。

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

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

- (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];
}
}

至于选择,您的 Controller 知道它从哪里获取数据,因此当用户选择特定行时,将该行索引转换为后备存储之一中的匹配对象应该很简单。

关于objective-c - 具有多个数据源的单个 NSTableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10378884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com