2

我有 6 个 UIButtons 已在以下代码中生成:

int count = 0;
    for (int i= 0; count<6; i++) {
        for (int j=0; j<1&&count<6; j++) {
            followbutn = [UIButton buttonWithType:UIButtonTypeCustom];
            followbutn.frame = CGRectMake(20, i*44+53, 280, 40);
            [followbutn setTitle:[followuparray objectAtIndex:count] forState:UIControlStateNormal];
            [followbutn addTarget:self action:@selector(followaction:) forControlEvents:UIControlEventTouchUpInside];
            [followbutn setImage:[UIImage imageNamed:@"checkbox_unchecked.png"] forState:UIControlStateNormal];

            followbutn.tag = count;
            [self.view addSubview:followbutn];
        }
        count++; 
    }

-(void)followaction:(id)sender
{
    UIButton *button = (UIButton *)sender;
    NSLog(@"%d",button.tag);

    [followbutn viewWithTag:button.tag];
    [followbutn setImage:[UIImage imageNamed:@"checkbox_checked.png"] forState:UIControlStateNormal];
}

当我单击任何按钮时,必须检查该特定按钮,而不得检查其他按钮。当我单击任何按钮时,只有带有最后一个标签的按钮会签入。

有人可以确定问题吗?

4

3 回答 3

2

所以基本上你想实现一个复选框?您应该创建一个UIButton. 然后将这行代码添加到UIViewController按钮的或其他容器中。

[myButton addTarget:self action:@selector(selfTapped) forControlEvents:UIControlEventTouchDown];

然后将以下方法添加到容器中:

-(void)selfTapped{
 //CustomButton is the UIButton Subclass
 for(CustomButton *but in buttonArray){
  if(but.checked){
    but.checked = NO;
    [but setImage:[UIImage imageNamed:@"unchecked.png"] forControlEvents:UIControlEventTouchDown];
  }else{
    but.checked = YES
    [but setImage:[UIImage imageNamed:@"checked.png"] forControlEvents:UIControlEventTouchDown];
  }
 }
}

请让我知道,如果你有任何问题。

Checked 是一个BOOL,再一次,这个方法在一个 的子类中UIButton,并且这段代码中的两个图像是显示一个选中和取消选中复选框的图像,对应于 的值BOOL

编辑:请参阅我上面的编辑以回应您的评论。

于 2012-08-18T04:10:04.323 回答
0

只要我理解您的问题,我认为您希望您的按钮用作单选按钮。为此,为每个按钮提供唯一标签,这与您在此处仅使用一个计数 var 标记的情况不同。使用该标签通过更改其图像来检查您的按钮并删除其他按钮的标签接受您选中的标签。当您想检查其他按钮时,再次初始化标签值。

于 2012-08-18T04:58:20.343 回答
0

在您的代码中使用它......运行这个循环直到最大标签值......

-(void)followaction:(id)sender
{
    for (int i = 0; i < value; i++)
    {
        UIButton *button = (UIButton *)[button viewWithTag:i];
        [button setImage:[UIImage imageNamed:@"checkbox_unchecked.png"] forState:UIControlStateNormal];
    }

    UIButton *button = (UIButton *)sender;

    [button viewWithTag:button.tag];
    [button setImage:[UIImage imageNamed:@"checkbox_checked.png"] forState:UIControlStateNormal];
}
于 2012-08-18T05:19:34.073 回答