gpt4 book ai didi

cocoa - 是否可以将 NSTableView 的选择绑定(bind)到另一个 tableview 的选择?

转载 作者:行者123 更新时间:2023-12-03 17:26:00 24 4
gpt4 key购买 nike

Screenshot

假设,我在核心数据模型文件中有 2 个实体,其中一个是 X 公司曾经完成的所有“交易”。除其他属性外,“交易”实体还具有“DATE”属性和一对一关系“COMPANY”(指定与 X 公司进行特定交易的公司)。另一个实体:“公司”当然包含与X公司进行交易的所有公司的信息。 “公司”实体具有一对多关系“交易”,它与“交易”实体的“公司”关系是逆关系。

因此,在 IB 中,我创建了一个 NSTableView (使用其自己的 NSArrayController )显示特定日期的所有交易(在 NSPredicate 的帮助下)。

然后,我创建另一个 TableView ,显示第一个 TableView 中所选交易的公司的对多关系“TRANSACTIONS”(显示特定日期的交易)。第二个 TableView 的 NSArrayController绑定(bind)是这样的:

** 绑定(bind)到:“第一个 tableview Controller 的名称”, Controller 键:选择,模型键路径:COMPANY.TRANSACTIONS(“公司”实体中的对多关系)**

到目前为止,一切正常,第二个表格 View 显示了 X 公司与第一个表格 View 中所选交易的公司完成的所有交易。

但是我有一组文本字段显示特定交易的详细信息。将这些文本字段与第一个 TableView (显示特定日期的交易的 View )的 Controller 绑定(bind)非常简单。但我想做的是:1/在第一个 TableView 中查找特定日期的交易,选择其中任意一个2/然后,从第二个 TableView 中检查该交易的公司(在第一个 TableView 中选择的)之前的所有交易3/选择任何以前的交易并从该组文本字段中检查交易的详细信息

所以很自然地我应该将文本字段的 gp 绑定(bind)到第二个 TableView 的 Controller 。但我发现第二个 TableView 中的默认选定行(显示公司之前所有交易的行)不是我在第一个 TableView 中为特定日期选择的交易。当然,我可以再次在第二个 TableView 中手动选择该交易....

所以我只想知道是否可以让第二个 TableView 根据我在第一个 TableView 绑定(bind)中选择的事务自动选择事务?

经过几个小时的谷歌搜索,我通过实现 tableview Delegate 协议(protocol)解决了这个问题:

    - (void)tableViewSelectionDidChange:(NSNotification *)aNotification { 
if (["nameOf1stTableView" selectedRow] > -1) {
NSArray *objsArray = ["nameOf2ndTableView'sController" arrangedObjects];
for (id obj in objsArray) {
if ([[obj valueForKey:@"DATE"] isEqualToDate: ["nameOf1stTableView'sController".selection valueForKey:@"DATE"]]) {
["nameOf2ndTableView" selectRowIndexes:[NSIndexSet indexSetWithIndex:[objsArray indexOfObject:obj]] byExtendingSelection:NO];
}
}
}

}

但是,这看起来太麻烦了...可以单独绑定(bind)来完成吗?

最佳答案

添加 transient 属性 dateFilterPredicateTransaction模型对象,它提供一个谓词,用于选择相关事务 - 当 Transaction 实例时您希望在 TableView #2 中显示的事务。在 TableView #1 中被选中。

您需要为交易日期实现自定义 setter ,以便在对象的交易日期更改时更新谓词。您还需要将其设置为awakeFromFetch (它不会调用 setTransactionDate )。

然后将数组 Controller 2 的过滤谓词绑定(bind)到数组 Controller 1 的 selection ,而不是 company.transactions ,使用dateFilterPredicate .

关于cocoa - 是否可以将 NSTableView 的选择绑定(bind)到另一个 tableview 的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4874956/

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