如何以编程方式替换使用绑定的 NSTextField 中的 "No Selection" 占位符?

How to replace programmatically "No Selection" placeholder in NSTextField that uses binding?

我的应用程序左侧有一个 NSTableView(主),右侧有文本字段(详细信息)

我使用核心数据和绑定来显示记录。

我有一个与 NSObjectController 绑定的文本文件。它是一个日期字段,我在文本字段中添加了 NSDateFormatter。

我的目标:在具有用户系统默认日期格式的文本字段上有一个占位符。我用下面的代码实现了这一点

.h代码:(只贴出相关代码)

@property (weak) IBOutlet NSDateFormatter *offerExpiresOnDateFormatter;
@property (weak) IBOutlet NSTextField *offerExpiresOnDateTextField;

和 .m 代码:​​

-(void)viewWillAppear {

    [_offerExpiresOnDateFormatter setDateStyle:NSDateFormatterShortStyle];
    [_offerExpiresOnDateTextField setPlaceholderString:[_offerExpiresOnDateFormatter dateFormat]];

}

这一切都有效。

我的问题:

它仅在应用程序加载时起作用(因为我使用 viewWillAppear)。

占位符以dd/mm/yy格式显示,我的系统默认格式。但是,如果我在 NSTableView 中单击空行,我的占位符就会消失并显示 "No Selection" 占位符。

我该如何防止这种情况发生?

当用户单击 NSTableView 中的空行时,如何显示我的 dd/mm/yy 占位符?

我不能只在绑定检查器下的 NSTextField 无选择占位符中键入 dd/mm/yy,因为我不知道用户将拥有什么作为系统默认值。

不要绑定 XIB 中的值,使用选项手动绑定它。

[self.offerExpiresOnDateTextField bind:NSValueBinding
    toObject:self.objectController
    withKeyPath:@"selection.date"
    options:@{NSNoSelectionPlaceholderBindingOption:
        self.offerExpiresOnDateFormatter.dateFormat}];