我花了很长时间才弄清楚如何在NSTableView
的自定义单元格视图上设置编辑。感谢StackOverflow,我想出了很多。附:我在Interface Builder中完成了所有这些工作。
我有一个列表,其中单元格是自定义多控件NSTableCellView
,其中包含:
name
(以粗体显示)description
detail
这是全文。仅在name
上设置可修改性。该表按名称排序。
当我编辑name
时,它会对我期望的绑定模型产生影响。该表甚至可以正确地重新排序。但是,它显示不正确。 description
和detail
(不可编辑)仍然正确显示,但name
(已编辑)是空白。当我检查模型时,它具有正确的更新值。但是单元格视图本身是不正确的。
这种情况不会一直发生 - 如果将单元格重新排序到表格的顶部或底部,通常会发生这种情况,但这可能是一个红色的鲱鱼,可能与{{1}有关} cell caching等等。
我修改了一个解决方法,在其中我将一个委托分配给NSTableView
(自动为NSTextField
生成)并拦截NSTableCellView
事件。出于某种原因,对于给定的编辑,此事件被触发两次(在我在文本字段中按“enter”之后) - 一次用于实际编辑,其中textShouldEndEditing
与模型名称不同,然后是另一个事件,其中fieldEditor.string
与模型名称相同。如果我在后一种情况下为fieldEditor.string
处理程序返回false
,则单元格内容最终会被正确绘制。那是黑客攻击。
我觉得我在这里做错了,这不应该是必要的。
textShouldEndEditing
事件应该被解雇两次吗?