У меня есть меню, которое имеет элемент для каждого значения в перечислении.Каков самый чистый способ привязки перечислимых свойств?
Меню:
[ ] Sort by Due Date
[ ] Sort by Priority
[√] Sort by Title
Перечисление:
typedef enum CW_TASK_SORT_METHOD {
CWTaskSortMethodDueDate,
CWTaskSortMethodPriority,
CWTaskSortMethodTitle
} CWTaskSortMethod;
Свойство:
@property(readwrite, assign) CWTaskSortMethod taskSortMethod;
Что чистейший способ подключить это? У меня есть две идеи, но оба они кажутся мне неудовлетворительными.
первая идея: Создание свойства для каждого значения (sortMethodIsDueDate
, setSortMethodIsDueDate:
и т.д.) Эти свойства могли бы назвать setTaskSortMethod:
и вызвать valueDidChange:@"sortMethodIsDueDate"
и т.д. Пункты меню затем связываются с этими свойствами. Это похоже на большую работу.
Вторая идея: Подключите каждый пункт меню к -(IBAction)updateSortMethod:(id)sender
, который затем может перебирать пункты меню и устанавливать значение в зависимости от sender
. Этот подход прекрасен до тех пор, пока taskSortMethod
не будет изменен другим разделом кода, в который должен быть добавлен код точки, чтобы синхронизировать меню с taskSortMethod
.
Я склоняюсь к первому подходу, как это имеет лучшее разделение между V & C.
Все лучшие идеи?
Я пошел со вторым подходом. Я думаю, что в следующий раз, когда эта проблема возникнет, я создам класс для его решения. Я удивлен, что нет более элегантного решения. –