2012-07-15 72 views
1

我理解MVC的概念。至少我希望我能做到,但最近遇到的一种特殊情况使我觉得我实际上不知道。MVC和使用一个UIButton的动态创建UI元素

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

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

,我遇到的是,当我试图从像CustomAnimation的自定义类动态创建一个UIButton的问题,尝试为其分配目标/操作。由于UIButton实际上是在ViewController FROM CustomAnimation类中生成的,前者应该得到一个指向父ViewController的指针,然后将其设置为目标。

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

一切都很好,除了一两件事 - dostuff方法应该驻留在视图控制器内部,以便成为该按钮可见这里的一切都变成了黑客攻击。

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

谢谢

回答

1

有很多的方式,你可以看看MVC在粒度方面。如果我正确理解你的问题,你正试图在一个单一的控制层面上实现MVC,在我看来,这个层次太精细了。我试图在控制器管理一大块用户界面控件(例如,一个视图或一个窗口。

你可以说按钮标签的可编辑性是bahavior属于按钮(通过其封装的),因此它的实现是或者应该是全面执行按钮的一部分。一旦你接受了,你可以将它作为UIButton的子类来实现,并将CustomAnimation中的代码移动到你的UIButton的子类中。或者在你的UIButton的子类中封装CustomAnimation,取其较为适当的一个。

+0

这确实是一个非常好的主意,罗杰。虽然它不能完全回答我的问题,但它给了我很大的领导力,而这正是我所期待的。谢谢! – yacana 2012-07-16 20:19:01