我正在制作一个iPad项目,它动态创建了一些我需要添加到应用程序主视图中的按钮。我正计划从我的ViewController中触发一个存在于我的View中的方法...说它叫做add_buttons。我的印象是,在MVC模式中,视图应该处理按钮的渲染和一般显示,但控制器应该处理交互。我也认为视图“知道”视图控制器的设计很糟糕。
所以我想我的问题是,我的控制器中是否包含按钮敲击逻辑?如果是这样,我该如何处理分离?如果我在视图中创建按钮,那么它必须具有对视图控制器的引用,以用作事件处理程序的委托。如果我在控制器中创建它们,那么我觉得我需要在控制器中设置某些UI元素,这对我来说是错误的。我知道我错过了一些显而易见的东西,但到目前为止,搜索已证明毫无结果。
有人能指出我正确的方向吗?
答案 0 :(得分:2)
按钮分接逻辑肯定属于控制器。
创建按钮的代码也可能属于控制器。但是,包含一个视图方法是有意义的,该方法返回一个按钮,其外观已配置但不是其行为。
一些普通的诗人:
此外,方法lowerCamelCase的命名约定。例如:add_button
应为addButton
。
答案 1 :(得分:1)
添加按钮进行查看时,
[myButton addTarget:nil action:@selector(myButtonPressed) forControlEvents:UIControlEventTouchUpInside];
在视图控制器中添加
-(void)myButtonPressed {
}
带有target的:nil事件将由包含此视图的第一个控制器处理
答案 2 :(得分:0)
我最近完成了一个项目,我必须动态创建包含UITextfields和UILabels的UIViews。我遇到这个问题的方法是从视图控制器中调用“addViews”函数。我认为这是一种更好更简单的方法,而不是处理UIView内部的视图控制器。我测试了我的方法并完全正常工作(动态更改UIView大小并添加其他UIViews与UITextfield和UILabel)。