2008-12-10 14 views
1

J'ai une application Core Data qui a une classe Event, qui a une date de début et une date de fin. Il est trivial de les lier à une paire de widgets NSDatePicker, mais je voulais que cela fonctionne avec le NSRangeDateMode disponible dans Leopard. Le NSDatePicker a une paire de méthodes qui traitent timeInterval, mais je ne semble pas être capable de lier à cela.Pouvez-vous Lier à l'attribut timeInterval d'un NSDatePicker?

Mise à jour: Je l'ai utilisé un appel manuel pour faire la liaison, et il fonctionne moitié:

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

Il définit le timeInterval dans le NSDatePicker lorsque l'objet sous-jacent est changé, mais ne précise pas l'objet sous-jacent lorsque timeInterval de NSDatePicker est modifié.

Répondre

1

Tristement, non. La propriété timeInterval du sélecteur de date n'est même pas correctement observable. Fondamentalement, vous êtes bloqué soit en configurant une méthode d'action, soit en utilisant la méthode de validation déléguée pour recevoir les mises à jour de sa valeur. En outre, vous devez arrondir au multiple le plus proche de 86400.0 (c'est-à-dire le nombre de secondes d'une journée), car le sélecteur de date est régulièrement désactivé par une fraction de seconde dans son intervalle de temps. Au moment où Snow Leopard roule, peut-être que cette fonctionnalité sera entièrement cuite.

+0

Cette suggestion m'a fait penser à la façon de le faire fonctionner - j'ai sous-classé NSDatePickerCell, et j'ai essayé de le rendre complètement compatible avec KVO pour timeInterval, mais cela a abouti à une boucle infinie. Je vais essayer la méthode de validation des délégués (que j'ai utilisée en premier, comme il s'avère). –

1

La prise en charge d'intervalle n'est disponible que lorsque vous utilisez la version graphique du sélecteur de dates. Même alors, il n'existe aucun support de liaison natif pour timeInterval. En outre, selon la façon dont vous avez l'intention d'utiliser cela, l'interface utilisateur pour sélectionner les plages qui dépassent le mois en cours est faible à mon avis.

+0

Ouais. Et cela ne fonctionne pas si vous avez une liaison établie sur Value (dateValue). –

+0

Il semble y avoir un support partiel pour la liaison à timeInterval, mais pas dans Interface Builder (voir ma mise à jour ci-dessus). –

0

1169097 explique comment implémenter des liaisons personnalisées.