我有一个菜单,其中包含枚举中每个值的项目。
菜单:
[ ] 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 之间有更好的分离。
有更好的想法吗?