【问题标题】:NSTableColumn bound to a BOOL valueNSTableColumn 绑定到一个 BOOL 值
【发布时间】:2009-06-25 01:38:48
【问题描述】:

我将 NSTableView 绑定到 NSArrayController。在我的模型中,我有一个 BOOL 字段。我正在尝试将该值绑定到列。它正确显示(值为 YES 时为 1,值为 NO 时为 0),但它是只读的。 =(当我试图编辑一个值时我无法提交它——当我按下回车键时没有任何反应,setter 永远不会被调用。列是可编辑的。

我可以成功地将它与 IB 绑定——我只是像往常一样绑定它并且一切正常。但我不能以编程方式做同样的事情=(

这就是列的创建和添加方式:

NSTableColumn *column = [[[NSTableColumn alloc] initWithIdentifier:@"ok"] autorelease];
[column setEditable:YES];
[[column headerCell] setStringValue:@"OK"];
[column bind:@"value" toObject:self.arrC withKeyPath:@"arrangedObjects.ok" options:nil];
[table addTableColumn:column];

我只有 BOOL 值有问题,如果我将同一列绑定到其他字段(只是更改 keyPath)一切正常。

【问题讨论】:

  • 顺便说一句,NSTextCell 也有同样的问题——我无法编辑它..

标签: cocoa cocoa-bindings key-value-coding boolean


【解决方案1】:

它是只读的 =(。当我试图编辑一个值时,我无法提交它——当我按下回车键时,什么也没有发生,setter 永远不会被调用。列是可编辑的。

然后,在您的代码 sn-p 中:

[column setEditable:NO];

您的专栏不可编辑。这就是编辑不起作用的原因。将NO 更改为YES

顺便问一下:您是否有理由将此值显示为文本而不是复选框?

【讨论】:

  • 最初是 YES.. 不知道它是如何以 NO 结束的。无论如何 - 没有帮助。问题不存在。双击后可以访问编辑器,但无法提交值。
【解决方案2】:

你需要绑定表格列,而不是单元格。

【讨论】:

  • 对不起,我描述得不够好。实际上,我正在绑定专栏。问题仅在于 BOOL 值 - 字符串和整数值工作正确..
  • 在这种情况下,请编辑您的问题以包含已选择列的绑定检查器的屏幕截图。
  • 问题是,我可以让它与 IB 一起工作而没有任何问题。但是如果我在运行时过程中创建列并将其添加到表中,我将无法使其工作——它适用于其他字段,但不适用于 BOOL 字段。
  • 在这种情况下,请编辑您的问题以包含您用于创建、添加和绑定表列的代码。
【解决方案3】:

什么是绑定到 arrC 的,我假设是您的阵列控制器?

arrC 是否绑定到数组?绑定到控制器的数组中的对象是什么?核心数据实体? NSMutable 字典?

【讨论】:

  • arrC 绑定到一个数组。在数组中——我自己的类的实体。
  • 您自己的实体是否有“setOk:”方法(或者“ok”是一个读写属性)?
【解决方案4】:

您需要一个值转换器,特别是 NSNegateBooleanTransformerName。 Google for Apple 的“Value Transformer 编程指南”

【讨论】:

  • 为什么我使用IB绑定列不需要它?
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多