【问题标题】:Cocoa: change the way cocoa reports model validation errors to userCocoa:改变 cocoa 向用户报告模型验证错误的方式
【发布时间】:2014-03-31 15:49:50
【问题描述】:

在我的 Objective-C Cocoa 应用程序中,我有一个名为 Group 的模型,它具有多个属性(如名称、描述、创建日期等),它的每个属性都有符合 KVO 的验证方法。

有一个NSTableView 绑定到NSArrayController 并显示用户可以修改的组列表。

现在,如果我选中“组名”列的值绑定中的“立即验证”复选框,验证将按预期进行,并且如果用户输入无效的组名,会显示一个警告框。

我想要做的是抑制警报框并用红色标记相应的表格行。

是否有可能以某种方式改变 Cocoa 通知用户验证错误的方式?

【问题讨论】:

  • 我忘了说,NSTableView 显示在文档模式工作表中,因此验证错误会在应用程序模式警报中报告,而不是在工作表中(无论是否“始终呈现应用程序模式警报”复选框是否选中),这就是为什么我要更改它,因为这会阻止整个应用程序,而不仅仅是当前活动的文档窗口。

标签: objective-c macos cocoa validation key-value-observing


【解决方案1】:

根据Key-Value Coding Programming Guide

验证基础结构为类提供了机会 接受一个值,提供一个替代值,或拒绝新值 属性并给出错误原因。

就是这样。开箱即用不支持其他行为。

不过,实现自定义行为应该不会太难:

你可以例如提供一个替代值以防验证失败,并在模型中的某处设置一些自定义标志,这反过来又允许您的表格视图相应地指示失败的验证。下次验证值并通过验证时,您可以重置标志。

【讨论】:

    猜你喜欢
    • 2013-05-12
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 2011-01-12
    • 2019-12-19
    • 1970-01-01
    相关资源
    最近更新 更多