使用 MVC。我有一个按钮。按钮绘图在视图中。按钮动作应该在控制器中,对吧?如何向按钮添加操作?从视图来看,不应该保留控制器(对于 MVC)的引用,然后是如何设置操作。按钮是否应该公开并由控制器访问?
或者,应该在控制器中绘制按钮。(不好)
或者,使用委托(但是 MVC 中的每个视图控制器对都必须有一个委托)
使用 MVC。我有一个按钮。按钮绘图在视图中。按钮动作应该在控制器中,对吧?如何向按钮添加操作?从视图来看,不应该保留控制器(对于 MVC)的引用,然后是如何设置操作。按钮是否应该公开并由控制器访问?
或者,应该在控制器中绘制按钮。(不好)
或者,使用委托(但是 MVC 中的每个视图控制器对都必须有一个委托)
控制器应该可以访问按钮,以便它可以设置操作。
例如,您可以像使用 UITableCells 一样进行操作 :) --> 您可以在视图上有一个属性按钮
但这是一个有争议的问题,也取决于个人品味
在控制器的标头中创建一个 IBAction:
-(IBAction)buttonPressed:(id)sender;
现在在 Interface Builder 中将您的按钮连接到此操作(使用 CTRL 从按钮拖动到文件所有者)。
接下来在控制器的实现中,您可以编写在按下按钮时执行的代码-(void)buttonPressed:(id)sender
也许您可以使按钮成为您视图的属性。或者您可以创建一个公开的视图方法,例如-(void)setupButtonSelector:(SEL)selector
;选择器是您的按钮选择器。
知道了。必须设置 addTarget:nil。该操作将传递给链中的下一个响应者。在这种情况下,视图控制器。
在视图中使用的按钮上设置目标选择器。并使用选择器方法名称定义一个方法。
前任:
[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];