1

我理解MVC的概念。至少我希望我这样做,但是我最近遇到的一个特殊情况让我觉得我实际上不知道。

问题: 我正在尝试创建一个类,该类在应用于现有按钮时会添加编辑该按钮标题的功能。它通过动态生成一个 UITextField 来实现,该 UITextField 将依次填充 Button 的新名称。我持有在一个名为 CustomAnimation 的类中添加 UITextField 并通过以下方式对其进行初始化的逻辑:

CustomAnimation *yar = [[CustomAnimation alloc] initWithButton:customButton];

我遇到的问题是,当我尝试从自定义类(如 CustomAnimation)动态创建 UIButton 并尝试为其分配目标/动作时。由于 UIButton 实际上是从 CustomAnimation 类的 ViewController 内部生成的,因此前者应该获取指向父 ViewController 的指针,然后将其设置为目标。

[classButton addTarget:viewController action:@selector(dostuff:) forControlEvents:UIControlEventTouchUpInside];

一切都很好,除了一件事 - dostuff方法应该驻留在 ViewController 中以便对该按钮可见,而这里一切都变成了 hack。

当您想从类而不是控制器内部生成临时 UI 元素时,正确的方法是什么?

谢谢

4

1 回答 1

1

您可以通过多种方式查看 MVC 的粒度。如果我正确理解了您的问题,那么您正在尝试在单个控制级别上实现 MVC,在我看来,这在我看来过于精细。我试图瞄准一个更粗略的方法,其中控制器管理一大块 UI 控件,例如视图或窗口。

您可能会争辩说按钮标签的可编辑性是属于按钮(由它封装)的行为,因此它的实现是或应该是按钮整体实现的一部分。一旦您接受了这一点,您就可以将其实现为 UIButton 的子类,并将 CustomAnimation 中的代码移动到您的 UIButton 子类中。或者将 CustomAnimation 封装在 UIButton 的子类中,以更合适者为准。

于 2012-07-15T22:49:19.553 回答