【问题标题】:MVC and the use of a UIButton to dynamically create UI elementsMVC 和使用 UIButton 动态创建 UI 元素
【发布时间】:2012-07-14 17:45:44
【问题描述】:

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

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

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

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

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

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

当您想从 Class 而不是 Controller 中生成临时 UI 元素时,正确的方法是什么?

谢谢

【问题讨论】:

    标签: objective-c ios model-view-controller


    【解决方案1】:

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

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

    【讨论】:

    • 这确实是个好主意,罗杰。虽然它不能完全回答我的问题,但它给了我很大的领先优势,这就是我一直在寻找的。谢谢!
    猜你喜欢
    • 2021-05-01
    • 2017-01-23
    • 1970-01-01
    • 2011-11-28
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 2012-01-26
    • 1970-01-01
    相关资源
    最近更新 更多