在Cocoa应用程序中是否存在用于保持UI和其他元素状态同步的标准模式?例如,我有一个由一个类管理的主菜单和一个由另一个类管理的工具栏。某些菜单项必须反映工具栏中的当前选择,反之亦然。我打算通过菜单项和工具栏项触发的选择器触发通知来处理这个问题。控制类将订阅这些更新UI以匹配选择。这是一个很好的方法吗?或者我在Cocoa中缺少一些其他自然的方法吗?
答案 0 :(得分:0)
对于是否应启用或禁用项目的特定情况,应将其留给目标(如果目标是第一响应者,则留给隐式目标)。它应该使用User Interface Validation。
绑定是另一项好技术。管理UI的状态应该在模型或控制器中,并且UI应该绑定到它。 (如果UI要绑定到模型,它应该是通过控制器。)这样,你只需要确保状态是最新的和一致的,其他一切都会自动发生
但是你描述的技术是一个很好的第三种选择。模型应在更改时向控制器层提供通知(通过NSNotifications
或委托)。控制器层会监视这些内容,并且知道状态更改应该对UI产生什么影响并明确配置UI以使其符合。