NSTableView具有自定义单元格视图和NSArrayController绑定绘制空白字符串

时间:2015-11-25 07:06:51

标签: swift cocoa

我花了很长时间才弄清楚如何在NSTableView的自定义单元格视图上设置编辑。感谢StackOverflow,我想出了很多。附:我在Interface Builder中完成了所有这些工作。

我有一个列表,其中单元格是自定义多控件NSTableCellView,其中包含:

  • name(以粗体显示)
  • description
  • detail

这是全文。仅在name上设置可修改性。该表按名称排序。

当我编辑name时,它会对我期望的绑定模型产生影响。该表甚至可以正确地重新排序。但是,它显示不正确。 descriptiondetail(不可编辑)仍然正确显示,但name(已编辑)是空白。当我检查模型时,它具有正确的更新值。但是单元格视图本身是不正确的。

这种情况不会一直发生 - 如果将单元格重新排序到表格的顶部或底部,通常会发生这种情况,但这可能是一个红色的鲱鱼,可能与{{1}有关} cell caching等等。

我修改了一个解决方法,在其中我将一个委托分配给NSTableView(自动为NSTextField生成)并拦截NSTableCellView事件。出于某种原因,对于给定的编辑,此事件被触发两次(在我在文本字段中按“enter”之后) - 一次用于实际编辑,其中textShouldEndEditing与模型名称不同,然后是另一个事件,其中fieldEditor.string与模型名称相同。如果我在后一种情况下为fieldEditor.string处理程序返回false,则单元格内容最终会被正确绘制。那是黑客攻击。

我觉得我在这里做错了,这不应该是必要的。

textShouldEndEditing事件应该被解雇两次吗?

0 个答案:

没有答案