Можете ли вы привязаться к атрибуту timeInterval NSDatePicker?

У меня есть приложение Core Data с классом Event, у которого есть дата начала и дата окончания. Привязать их к паре виджетов NSDatePicker - тривиально, но я хотел заставить его работать с NSRangeDateMode, доступным в Leopard.

У NSDatePicker есть пара методов, которые имеют дело с timeInterval, но я, похоже, не могу привязаться к этому.

Обновление: я использовал ручной вызов для привязки, и он наполовину работает:

[picker bind:@"timeInterval" 
    toObject:array 
 withKeyPath:@"selection.timeInterval" 
     options:options];

Он устанавливает timeInterval в NSDatePicker при изменении базового объекта, но не устанавливает базовый объект при изменении timeInterval NSDatePicker.


person Matthew Schinckel    schedule 10.12.2008    source источник


Ответы (3)


К сожалению нет. Свойство timeInterval средства выбора даты даже не является наблюдаемым должным образом "ключ-значение". По сути, вы застряли либо при настройке метода действия, либо при использовании метода проверки делегата для получения обновлений его значения. Кроме того, вы захотите округлить его до ближайшего кратного 86400.0 (то есть количества секунд в день), поскольку средство выбора даты постоянно отключается на некоторую долю секунды в сообщаемом timeInterval. Возможно, к тому времени, когда Snow Leopard появится в игре, эта функция будет полностью реализована.

person Boaz Stuller    schedule 10.12.2008
comment
Это предложение заставило меня задуматься о том, как заставить его работать - я создал подкласс NSDatePickerCell и попытался сделать его полностью совместимым с KVO для timeInterval, но это привело к бесконечному циклу. Я попробую метод проверки делегата (который, как оказалось, я использовал первым). - person Matthew Schinckel; 11.12.2008

Поддержка интервала доступна только при использовании графической версии средства выбора даты. Даже тогда для timeInterval нет встроенной поддержки привязки.

Также, в зависимости от того, как вы собираетесь использовать это, пользовательский интерфейс для выбора диапазонов, выходящих за пределы текущего месяца, на мой взгляд, плохой.

person Ashley Clark    schedule 10.12.2008
comment
Ага. И это не сработает, если у вас есть привязка к значению (dateValue). - person Matthew Schinckel; 11.12.2008
comment
Кажется, есть частичная поддержка привязки к timeInterval, но не в Interface Builder (см. Мое обновление выше). - person Matthew Schinckel; 11.12.2008

1169097 объясняет, как реализовать пользовательские привязки.

person yakovlev    schedule 30.08.2009