在Objective-c中,检测何时按下了所有可变数量的UIButton

时间:2012-05-11 11:15:06

标签: objective-c uibutton nsmutablearray

我有一个关于检查是否已按下所有UIButtons的最佳方法的快速提问。

我有以编程方式创建的x号UIButtons。 每个按钮都有自己的唯一标记(从100开始向上递增。)

单击按钮时会运行:

- (void)myButtonAction:(id)sender
{
    [self handleButton:sender];
}

- (void)handleButton:(UIButton *)button
{
    // ???
}

当且仅当用户点击了所有按钮时,才需要运行实例[self allButtonsClicked]

最好的方法是什么?我应该制作NSMutableArray,并检查标签号是否在NSMutableArray中,如果不是,则添加它。 然后当NSMutableArray的大小与x个按钮数相等时,运行[self allButtonsClicked]

确保点击每个按钮的最简单方法是什么?


*编辑我输入后想出来了。写出来帮助我理解它。


-(void)letterreveal: (id)sender {

    //data
    UIButton *button = (UIButton *)sender;

    //action
    [self clickcheck:[NSNumber numberWithInt:button.tag]];
}


-(void)clickcheck:(NSNumber*)currenttag {

    if ([self.buttonPressCounts containsObject:currenttag]) {
        NSLog(@"case A");
    }
    else {
        [self.buttonPressCounts addObject:currenttag];
         NSLog(@"case B");

        if([self.buttonPressCounts count]==[self.currentword length])
        {
            NSLog(@"fininshed");
        }
    }
}

buttonPressCounts是一个NSMutablearray。 我只需要确保在我按下按钮时设置它。

      self.buttonPressCounts = [NSMutableArray arrayWithCapacity:[self.currentword length]];

currentword是一个NSString(每个按钮是一个从NSString派生的字母)。

2 个答案:

答案 0 :(得分:1)

您可以使用所有按钮创建NSMutableSet,然后从该组中删除每个单击的按钮,直到它为空。一旦设置为空,您肯定已经点击了所有按钮。

答案 1 :(得分:0)

如果您不介意,如果按一次或多次按钮,请使用NSMutableSet的成员ivar。

我会使用一些标签,但添加/删除按钮本身。