2016-02-23 2 views
0

Мое приложение имеет один NSTableView слева (мастер) и текстовых полей справа (подробнее)Как заменить программный блок «Нет выбора» в NSTextField, который использует привязку?

Я использую основные данные & обязательными для получения записей, отображаемых.

У меня есть текстовый файл, связанный с 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».

Как я могу предотвратить это?

Как я могу указать место для dd/mm/yy, когда пользователь нажимает на пустую строку в NSTableView?

Я не могу просто ввести dd/mm/yy в NSTextField No Selection Placeholder под обязательным инспектором, так как я не знаю, что пользователь будет использовать по умолчанию.

+0

Попробуйте перетащить объект NSDateFormatter из библиотеки объектов в NSTextField в Storyboard и установить стиль даты и времени в атрибуте Inspector. Прокомментируйте свой код и попробуйте этот путь. – Khundragpan

+0

Попробуйте привязать No Selection Placeholder к ключевому пути 'offerExpiresOnDateFormatter.dateFormat' вашего контроллера представления. – Willeke

+0

@ Уилле, не могли бы вы рассказать мне, как это сделать? – user2417624

ответ

1

Не привязывайте значение в XIB, привяжите его вручную с помощью опций.

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

Я получаю сообщение об ошибке [ valueForUndefinedKey:]: этот класс не является ключевым значением, совместимым с кодировкой для ключевой даты. Я отвязал текстовое поле от XIB, и я помещаю вышеуказанный код в метод awakeFromNib. Я также пробовал один и тот же код в viewWillLoad и viewDidLoad без каких-либо успехов. Любая помощь? – user2417624

+0

Ой, если не ошибаюсь, я должен уделять больше внимания. Я отредактировал свой ответ. – Willeke

+0

Отлично. Работает как шарм. Благодарю. – user2417624

 Смежные вопросы

  • Нет связанных вопросов^_^