【发布时间】:2012-03-03 03:49:39
【问题描述】:
我有一个关于向自定义视图上的 UIButton 添加目标时的最佳做法的问题。目前,我在我的视图的加载方法中创建我的 UIButton,并将我的视图指定为按钮目标。我的观点是在按下按钮时处理逻辑,我突然想到这不是好的 MVC。
所以,我宁愿让我的控制器提供自己作为目标和按钮的操作,但是我不确定实现这一点的最佳方法。
可以使用对控制器的引用来初始化视图,或者可以使用 UIResponder 的 nextresponder 获取控制器,并使用此引用设置目标。但是,这可能会导致循环保留,并且需要我的视图了解我的控制器上存在的方法,这比我希望的更紧密耦合。
或者,我可以为视图上的每个 uibutton 创建一个 setter。但是,如果我有多个按钮,或者包含带有按钮的自定义子视图的视图,这很快就会变得笨拙。我还可以为每个按钮创建属性,但这也很笨拙,并且允许控制器访问超出其需要的内容(它只需要设置目标,不需要能够获得对按钮的任何引用)。
最后,我可以为控制器中的所有按钮创建和添加目标,并在初始化时将其传递给视图,但这似乎也违反了 MVC 的角色。
这似乎是一种常见情况,这些做法是否被认为是标准的,还是有更好的解决方案?
【问题讨论】:
-
什么是“我的观点的加载方法”?是视图的init方法吗?是视图控制器的
loadView方法吗? -
对不起,应该更清楚。它只是我在 init 中调用的一个自定义方法,其目的是分配子视图并将它们放在我的视图中。
标签: objective-c model-view-controller uibutton uiresponder