MVC - 视图或控制器中的按钮操作?

时间:2013-01-28 12:36:14

标签: iphone ios model-view-controller uiviewcontroller

使用MVC。我有一个按钮。按钮绘图在视图中。按钮动作应该在控制器中,对吗?如何为按钮添加操作?从视图来看,不应该保留控制器(对于MVC),然后如何设置动作。 按钮是否应公开并由控制器访问?

或者,按钮应该在控制器中绘制。 (不好)

或者,使用委托(但随后MVC中的每个视图 - 控制器对都必须有一个委托)

5 个答案:

答案 0 :(得分:0)

按钮应该可由控制器访问,以便它可以设置操作。

例如,您可以使用它与UITableCells一起使用:) - >你可以在视图上有一个属性按钮

BUT 这是一个争论的问题,也取决于个人品味

答案 1 :(得分:0)

在控制器的标题中创建一个IBAction:

-(IBAction)buttonPressed:(id)sender;

现在,在Interface Builder中,将按钮连接到此操作(使用CTRL从按钮拖动到文件所有者)。

接下来在控制器的实现中,您可以编写在-(void)buttonPressed:(id)sender

中按下按钮时执行的代码

答案 2 :(得分:0)

也许你可以让按钮成为你视图的属性。或者你可以像-(void)setupButtonSelector:(SEL)selector那样制作一个公开的观点方法;选择器是你的按钮选择器。

答案 3 :(得分:0)

在视图中使用的按钮上设置目标选择器。并使用选择器方法名称定义方法。

前:

[button addTarget:self action:@selector(YourMethodName) forControlEvents:UIControlEventTouchUpInside]; // Declare this where you are adding button in view.

-(void)YourMethodName // Use this where you need to perform that button action.
{
   // Do what you need.
}

如果你在运行时添加包含该按钮的视图。尝试另一种技巧。 在添加按钮时为该按钮设置标记值。并在您的控制器中通过其标记值访问该按钮并在按钮上添加目标。

实施例

UIButton *btn = (UIButton*)[self.view viewWithTag:10];
    [btn addTarget:self action:@selector(methodName) forControlEvents:UIControlEventTouchUpInside];

答案 4 :(得分:0)

知道了。必须设置addTarget:nil。该动作将被传递给链中的下一个响应者。在这种情况下,视图控制器。