编辑 NSOutlineView 项目后使用委托
Posted
技术标签:
【中文标题】编辑 NSOutlineView 项目后使用委托【英文标题】:Using delegate after editing NSOutlineView item 【发布时间】:2013-11-26 00:43:09 【问题描述】:我的设置是
我有一个包含一个 NSpanel 和一个 NSOutlineView 的 nib 文件。
大纲视图是通过绑定和 NSTreeController 填充的,我有 NSOutlineView 的子类,其中我有一些委托和拖放方法。
我的问题
我正在尝试实现委托方法
- (void)textDidEndEditing:(NSNotification *)aNotification
我可以编辑 NSOutlineview 中的任何项目,一旦我点击“返回”,就会调用委托方法,但是窗口不再处于活动状态。并且该项目处于“编辑模式”我必须单击已编辑项目上方或下方的项目才能终止编辑模式。我附上了几张图片来说明
目前,除了 NSlog 之外,我在 textdidendediting 中没有任何内容来查看它是否被调用。如果我按预期删除它执行的方法,则编辑完成,窗口仍处于活动状态。
编辑项目
一旦我点击“返回”,窗口就会失去焦点并且项目仍处于编辑模式。
【问题讨论】:
您是否尝试调用 -[super textDidEndEditing:]? @KenAspeslagh 做到了!如果您将评论更改为我会接受的答案,我也希望您能快速解释一下为什么在这种情况下您必须调用 super。谢谢 【参考方案1】:如果覆盖 NSOutlineView 的 textDidEndEditing:
正在改变 tableview 的行为,请尝试添加对 -[super textDidEndEditing:]
的调用。
这里发生的事情是NSOutlineView
(或其超类之一)在textDidEndEditing:
中做一些重要的事情,并且通过在您的子类中覆盖该方法,父类的方法永远不会被调用。
【讨论】:
以上是关于编辑 NSOutlineView 项目后使用委托的主要内容,如果未能解决你的问题,请参考以下文章