MVC和使用UIButton来动态创建UI元素



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

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

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

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

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

除了一件事之外,一切都很好——dostuff方法应该位于ViewController内部,以便对该按钮可见,而在这里,一切都变成了黑客。

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

感谢

从粒度角度来看MVC有很多方法。如果我正确理解你的问题,那么你正试图在单个控制级别上实现MVC,在我看来,这太细粒度了。我试图采用一种更粗糙的方法,即控制器管理一大块UI控件,例如视图或窗口。

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

最新更新