1

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

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

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

4

5 回答 5

0

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

例如,您可以像使用 UITableCells 一样进行操作 :) --> 您可以在视图上有一个属性按钮

但这是一个有争议的问题,也取决于个人品味

于 2013-01-28T12:51:20.173 回答
0

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

-(IBAction)buttonPressed:(id)sender;

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

接下来在控制器的实现中,您可以编写在按下按钮时执行的代码-(void)buttonPressed:(id)sender

于 2013-01-28T12:53:11.077 回答
0

也许您可以使按钮成为您视图的属性。或者您可以创建一个公开的视图方法,例如-(void)setupButtonSelector:(SEL)selector;选择器是您的按钮选择器。

于 2013-01-28T12:53:54.557 回答
0

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

于 2013-01-28T13:39:19.377 回答
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];
于 2013-01-28T13:25:02.083 回答