J'ai un menu qui a un élément pour chaque valeur dans une énumération.Quel est le moyen le plus propre de lier les propriétés énumérées?
Le menu:
[ ] Sort by Due Date
[ ] Sort by Priority
[√] Sort by Title
ENUM:
typedef enum CW_TASK_SORT_METHOD {
CWTaskSortMethodDueDate,
CWTaskSortMethodPriority,
CWTaskSortMethodTitle
} CWTaskSortMethod;
La propriété:
@property(readwrite, assign) CWTaskSortMethod taskSortMethod;
Quelle est la façon la plus propre au fil de ça? J'ai deux idées mais toutes deux me paraissent insatisfaisantes.
1ère idée: Créer des propriétés pour chaque valeur (sortMethodIsDueDate
, setSortMethodIsDueDate:
etc.) Ces propriétés appelleraient setTaskSortMethod:
et appeler valueDidChange:@"sortMethodIsDueDate"
etc. Les éléments du menu serait alors se lier à ces propriétés. Cela semble beaucoup de travail.
2ème idée: Connectez chaque élément de menu à -(IBAction)updateSortMethod:(id)sender
, qui pourrait ensuite itérer les éléments de menu et définir la valeur en fonction de sender
. Cette approche est correcte jusqu'à ce que taskSortMethod
soit modifié par une section de code différente à laquelle le code de point doit être ajouté pour maintenir le menu en synchronisation avec taskSortMethod
.
Je penche vers la première approche car il a une meilleure séparation entre le V & C.
Les meilleures idées?
Je suis parti avec la 2ème approche. Je pense que la prochaine fois que ce problème surgira je vais créer un cours pour y remédier. Je suis surpris qu'il n'y ait pas de solution plus élégante. –