【问题标题】:End Editing on NSTableView (View Based)在 NSTableView 上结束编辑(基于视图)
【发布时间】:2014-04-18 11:42:04
【问题描述】:

当用户在 tableview 上编辑文本字段并决定单击窗口的关闭按钮时,他/她所做的更改不会被保存。如何强制表格视图(基于视图)结束编辑(不中止编辑)?

【问题讨论】:

  • 当我在我的项目中使用情节提要和连接到模态表时,我无法做出适合我的答案。我最终让我的viewController 成为表格单元格视图中NSTextField 的代表。然后,当单元格视图的文本字段触发control(_ control: NSControl, textShouldBeginEditing fieldEditor: NSText) -> Boolcontrol(_ control: NSControl, textShouldEndEditing fieldEditor: NSText) -> Bool 时,我切换了工作表“确定”按钮的isEnabled 标志。这不漂亮,但它迫使用户结束编辑单元格的文本,然后确认他们的输入。

标签: macos cocoa nstableview


【解决方案1】:

最简单的方法是为您的窗口分配一个委托并响应NSWindow-windowShouldClose: 委托方法。在其中,调用-makeFirstResponder: 使窗口本身成为第一响应者,注意它给出的BOOL 答案。您应该返回任何-makeFirstResponder: 的答案作为代表...ShouldClose: 消息的答案,因为它可能无法结束编辑/辞职第一响应者。假设它成功,它将结束编辑并触发您在实际关闭之前设置的任何操作/绑定机制。这是因为NSTableView 和它在基于视图的模式下使用的视图是NSControl 的子类,并通过结束编辑等自动处理响应者状态更改。希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多