UIButton和行动问题

时间:2011-07-27 08:47:45

标签: iphone uibutton ibaction

我正在动态创建一些UI按钮。并且用户单击任何一个按钮将显示某些内容(例如:不同视图)。所以我成功制作了按钮,获得标签。但是在下面的IBAction方法中,因为所有这些按钮都是动态创建的。所以我不能使用if,else if语句来显示基于标签号的视图。我在考虑使用循环?任何想法?

这是我的代码:

NSMutableArray *buttonsArray = [[NSMutableArray alloc] initWithObjects:nil];

for(int i = 0; i < [someArray count]; i++)
{
      button = [[UIButton alloc] initWithFrame:CGRectMake(btnX,btnY,btnW,btnH)];

    button.tag = i;

    [buttonsArray addObject:button];

    [[buttonsArray objectAtIndex:i] addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

    button.titleLabel.text = [NSString stringWithFormat:@"Click it"];

    [self.view addSubview:button];

    btnY = btnY + 120;
}

`-(IBAction) buttonPressed:(id)sender `
{

    UIButton *btn = (UIButton *)sender;
    NSLog(@"%ld", btn.tag);

      //Don't know the number of buttons, so this is not gonna work
    if( btn.tag == 1)
    {
            //do something
    }
        if( btn.tag == 2)
    {
            //do something
    }
    if( btn.tag == 3)
    {
            //do something
    }
    if( btn.tag == 4)
    {
            //do something
    }

}

3 个答案:

答案 0 :(得分:0)

你得到多个UI按钮? b'coz你的X和Y对所有人都是一样的..

答案 1 :(得分:0)

除了两件事,你的代码都可以。

(1)更改按钮的坐标,以便为视图中的所有按钮获得不同的位置。

(2)更改以下代码:

[[buttonsArray objectAtIndex:i] addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

使用此代码:

[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

如果需要进一步的帮助,请告诉我。

答案 2 :(得分:0)

循环不是完美的解决方案,我认为......同意Jennis ...使用switch而不是if else语句...如果你想使用循环试试:

-(IBAction) buttonPressed:(id)sender{
UIButton *selectedbtn = (UIButton *)sender;
for (UIButton *bttn in buttonsArray) {       
    if ([bttn.tag == selectedbtn.tag ) {
        //do something
    }
}

}

相关问题