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

问题描述:

我的应用程序有一个NSTableView的左侧(主)和文本框右侧(详细信息)如何在使用绑定的NSTextField中以编程方式替换“No Selection”占位符?

我使用的核心数据&结合以获得显示的记录。

我有一个与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中单击空行,我的占位符将消失,并显示“无选择”占位符。

我该如何预防?

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

我不能只在绑定检查器下的NSTextField No Selection Placeholder中键入dd/mm/yy,因为我不知道用户将作为系统默认值具有什么功能。

+0

试图拖动和从对象库滴'NSDateFormatter'对象'NSTextField'在故事板,并设置日期和时间风格属性检查器。注释掉你的代码并尝试这种方式。 – Khundragpan

+0

尝试绑定没有选择占位符到您的视图控制器的关键路径'offerExpiresOnDateFormatter.dateFormat'。 – Willeke

+0

@Willeke,你能告诉我该怎么做吗? – user2417624

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

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

我得到一个错误[ valueForUndefinedKey:]:这个类不是关键的日期编码兼容的值。我从XIB解绑定了textfield,并将上面的代码放在了awakeFromNib方法中。我也在viewWillLoad和viewDidLoad中尝试了相同的代码,没有任何成功。任何帮助? – user2417624

+0

哎呀错了,我必须多加注意。我编辑了我的答案。 – Willeke

+0

完美。奇迹般有效。谢谢。 – user2417624