4

我正在尝试一个简单的应用程序,其中我有一个可变字典的可变数组,例如 -

NSMutableDictionary *sample6 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"title6",@"title",[NSNumber numberWithBool:NO],@"state", nil];

在 IB 中,我使用 NSButtonCell(复选框)创建了一个表格视图。

我能够使用下表列绑定显示复选框状态(选中或未选中):

Value - ArrayController.arrangedObjects.state

在这种情况下,它显示了一组带有标题的复选框 - “检查”,如下面的屏幕截图所示:

在此处输入图像描述

现在我的目标是使用绑定显示复选框标题,以便它从相同的可变字典中获取值,从中获取其状态。

我尝试对纽扣电池进行以下绑定,但它不起作用:

标题-> ArrayController.selection.title

我还为纽扣电池尝试了这种绑定:

标题-> ArrayController.arrangedObjects.title

但它不起作用,使用上面的绑定后它看起来像这样:

在此处输入图像描述

任何人都可以建议我使用哪个控制器键,如果这不是显示标题的正确方法,那么正确的方法是什么?

4

1 回答 1

6

不幸的是,如果你想这样做,你需要编写一些代码。将表列值绑定到数组时,表列正在处理获取原型数据单元格,设置其值,并为每一行“标记”它。按钮单元的绑定不会“通过”表格列公开,因此简单的绑定不会为您完成。

回答您的问题

所以。由于只公开了值绑定,因此如果您确实希望复选框的标题反映值(即,您确实希望复选框同时处理检查状态和显示标题),则必须手动设置标题。为此,您必须将绑定与 < NSTableDelegateProtocol > . 每次被询问时,使用-tableView:willDisplayCell:forTableColumn:row:方法将单元格的 -title 属性设置为数组控制器的 -arrangedObjects 数组中正确对象的属性。混合绑定和数据源/委托方法实际上比最基本的应用程序更常见,所以不要担心你在做一些肮脏的事情。注意:您将无法通过这样做来支持编辑标题,因为它是一个复选框。

另一种设计

就个人而言,我会避免所有这些,只需为标题添加一个单独的表格列。将新列的值绑定到数组控制器的值arrangedObjects.title并关闭复选框按钮单元格的标题,以便仅显示复选框本身。这大大简化了整个事情并允许编辑标题。

于 2011-11-10T16:55:27.327 回答