NSTableView中的自定义日期格式

时间:2012-02-09 22:54:17

标签: cocoa nstableview nsdateformatter

我的应用程序耍弄历史事件。有些活动日期可能是公元前几千年。显然,此类事件的日期并不十分准确,最终的结果如“公元前约20,000”或“公元前5万年前”。

为了解决这个问题,我创建了一个自定义视图,允许用户在输入事件时构建自定义日期格式。然后存储此格式 - 以供以后显示 - 将事件的日期作为NSString的实例。对于每个视图显示一个事件的视图,这一切都很有效。

然而,当我想在NSTableView中显示多个事件时,我被卡住了。我在NSTableView的表格单元格中添加了日期格式化程序,但似乎无法将存储的日期格式绑定到单元格中的日期格式化程序。

我怎样才能做到这一点?请记住,表格中的每一行的格式字符串可以不同......

1 个答案:

答案 0 :(得分:2)

我有类似的要求,但还没有提出一个很好的解决方案,但我也没有花很多时间尝试。

我想到的是,因为它需要逐行变化,才能使格式化程序成为模型对象的属性,然后在表列上有一个“元格式化程序”来询问objectValue和返回将模型的格式化程序应用于模型的数据值的结果。 (如果这有任何意义的话......)

编辑:伪代码

在您的自定义NSFormatter子类(“元格式化程序”)中,您将实现以下内容:

- (NSString *)stringForObjectValue:(id)object {
    return [[object customFormatter] stringForObjectValue:[object date]];
}

实际上,非绑定元格式化程序充当内部表示的每行自定义格式化程序的代理。使它与Core Data一起使用,嗯,你自己就在那里。 : - )