如何动态创建多个按钮并处理其各自的事件? + iPhone SDK

时间:2009-03-20 16:16:33

标签: iphone objective-c uikit

现在我正在创建一个iPhone应用程序。我需要动态创建多个按钮并分别处理相应的事件。每个按钮事件可以单独执行,还是可以将变量或对象发送到方法,并根据该值区分按钮行为。有人能指出我该怎么做吗?

请帮助,

SYAM

3 个答案:

答案 0 :(得分:7)

您应该查看iPhone SDK中的UI目录示例。它有一些programmaticaly创建所有UI元素的例子。

我不相信你可以将一个参数传递给触发按钮时调用的函数,因此每个按钮需要一个单独的函数。然而,这些可能是轻量级函数,用param调用另一个函数。

要手动创建按钮并设置其操作,您可以执行以下操作:

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(80.0, 170, 150.0, 30.0);
[button setTitle:@"My Button" forState:UIControlStateNormal];
[button addTarget:self action:@selector(myAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];

答案 1 :(得分:5)

当一个按钮调用IBAction(它是你传入的选择器)时,它还会传递一个指针,该指针指向通常在:(id)sender参数中的按钮:

- (IBAction) doSoemthing:(id)sender

所以你可以根据传入的按钮找出你想要做的事情。通过创建基于所有按钮地址的地图,或者让您使用的所有UIButton都是UIButton的子类,您可以在其中插入某种自定义ID,并在doSomething:被击中时查看它。

答案 2 :(得分:2)

您可以通过编程方式使用UIButton的tag属性并访问该标记。这比子类化更容易。

这是一个例子: Detecting which UIButton was pressed in a UITableView