我可以让一个按钮在一个for循环中有两个动作吗?

时间:2011-06-05 05:09:58

标签: iphone objective-c cocoa-touch

我有什么理由不这样做吗?我是编程iPhone的新手,所以我只是想检查一下,由于某些原因或其他原因,我的内存占用率并不高。

我正在循环中创建按钮(短语中每个字母一个),然后可能会有多达100个此代码同时运行的实例,因此如果出现问题则可能是一个大问题。

感谢您的建议!

UIButton *aButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[aButton setTag:l];
CGRect buttonRect = CGRectMake(11+charact*20, -40 + line*50, 18, 21);
aButton.frame = buttonRect;

[aButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[aButton addTarget:self action:@selector(thisButton:) forControlEvents:UIControlEventTouchUpInside];

[aButton setTitle:@" " forState:UIControlStateNormal];
[gameScroll addSubview:aButton];

2 个答案:

答案 0 :(得分:1)

您正在为相同的事件类型注册2个不同的选择器。会发生什么 - 第二个将覆盖第一个。这有什么意义?可能是您的代码示例中有拼写错误,但无论如何,您可以为不同的事件注册不同的选择器。如果你在循环中创建按钮,这不是问题,因为每次它都会为这个目标注册一个不同的对象。您的功能可能如下所示:

- (void) buttonClicked:(id) sender
{
   // your code
}

其中sender是对象,它将选择器发送到目标。在这种情况下你的按钮。

至于他们同时运行......他们是否在不同的线程上运行?通常GUI仅在主线程上运行,因此如果这是一个问题,它将不会同时发生。

希望它能回答你的问题

答案 1 :(得分:0)

对不同类型的控制事件进行多个操作是有意义的。

对于同一控件事件,将调用这些不同的操作。您是否会在这些不同的行动中执行相同的任务?

如果你想在这些不同的动作中做不同的任务,你不能在同一个动作中使用某些条件做同样的事情吗?