在基于视图的NSTableview中为可编辑文本字段使用NSDateFormatter

时间:2014-10-07 16:16:59

标签: cocoa date nsdateformatter nstableview

我正在努力使用基于视图的NSTableview的OS X应用程序来显示由Core Data管理的各种对象。其中大部分是在界面构建器中管理的,所以这里是对那里设置内容的描述:我有一个列按日期列出每个条目。列的视图只包含一个NSTextField,我将NSDateFormatter拖到该文本字段的单元格上。 NSTableview的内容绑定到一个NSArrayController,它包含我列出的实体,每个实体都有一个属性为“date”。 NSTextField的值绑定到“Table Cell View”和objectvalue.date。

所以这一切都能很好地显示日期列表,并且在界面构建器中设置的NSDateFormatter让我可以设置日期的显示方式(中等样式等)。但是,我需要这些日期字段是可编辑的,每当我尝试编辑其中一个包含日期的文本字段时,我都会收到一个警告,告知新值无效。

如何在IB或代码中进行设置,以便用户可以正确编辑这些日期?我真的希望在这里输入相当宽松,并且如果可能的话接受自然语言字符串。

我是否需要将NSTextfield子类化以进行不同的验证?或者这是NSDateFormatter的问题?

(顺便说一句,如果你有关于这个问题的代码提示,我在swift编码。)

1 个答案:

答案 0 :(得分:0)

我从来没有真正弄清楚如何处理这个问题,就像我原本想要的那样,但由于这个问题已经暂时没有回答,我已经决定发布我如何处理这种情况,即使它&# 39;更多的是解决问题。

我决定放弃编辑和验证日期的文本字段。现在他们只显示每个条目的日期。对于编辑功能,我更改了tableview的目标" doubleAction:"显示包含图形NSDatePicker的弹出窗口,其值已绑定到在tableview中选择的对象的日期。然后,当用户选择不同的日期时,它会更改该值并取消弹出窗口。

我认为用户交互的效果与我最初发布此问题时的想象一样,甚至可能更好。