比较一个数组objective-c中的两个UIButton.tag元素

时间:2014-09-30 17:22:14

标签: ios objective-c arrays

我有一个名为'_orderOfCardPlacement'的数组,它可以在每次游戏后获取放入其中的对象。这些对象是UIButton,它有许多细节,例如setImage,setBounds,setCenter,最重要的是这个问题setTag。 setTag有两种可能的结果:'1'或'2',它们最初设置为一个或另一个,这可以通过另一个每回合调用的方法来改变。我需要做的是查看这个数组,看看'1'出现了多少次,'2'多少次出现,然后比较结果。因此,如果'1'出现9次,'2'出现7次,那么'1'在这种情况下获胜。所以,当我NSLog我的阵列(说一转后)我得到这个:

"<OBShapedButton: 0x7ff6f968e6a0; baseClass = UIButton; frame = (103 387.5; 150 135); opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; tag = 1; layer = <CALayer: 0x7ff6f968e8a0>>"

以及随后的转弯将为阵列添加更多按钮。但是我需要知道一旦这个数组已满并且游戏完成了如何访问要比较的对象的'tag ='部分。感谢您的任何建议,如果有必要,请添加更多代码!

这是完整的解决方案,如果有更优雅的方式去做我在这里做的事情,肯定有兴趣知道!

//set the amount of cards each player has
_howManyCardsForComputer = 0;
_howManyCardsForPlayer = 0;
for (int i = 0; i < _orderOfCardPlacement.count; i++) {
    UIButton *auxButton = (UIButton *) [_orderOfCardPlacement objectAtIndex:i];
    NSInteger playerScore = auxButton.tag;
    NSMutableArray *totalScoreArray = [[NSMutableArray alloc] init];
    [totalScoreArray addObject:[NSNumber numberWithInteger:playerScore]];
    for (int j = 0; j < totalScoreArray.count; j++) {
        if ([[totalScoreArray objectAtIndex:j] isEqualToNumber:[NSNumber numberWithInteger:1]]) {
            _howManyCardsForPlayer++;
        }
        if ([[totalScoreArray objectAtIndex:j] isEqualToNumber:[NSNumber numberWithInteger:2]]) {
            _howManyCardsForComputer++;
        }
    }
}

_playerScore.text = [NSString stringWithFormat:@"Players cards %i", _howManyCardsForPlayer];
_playerScore.hidden = NO;
_computerScore.text = [NSString stringWithFormat:@"Computers cards %i", _howManyCardsForComputer];
_computerScore.hidden = NO;

1 个答案:

答案 0 :(得分:0)

我不确定我是否清楚地了解你想要实现的目标。如果您的按钮存储在NSMutableArray中,您可以通过设置第i个元素(在for循环中)并应用强制转换来检查它们的标记。

NSMutableArray *arrayWithButtons = [[NSMutableArray alloc] init];
//... Fill the array

//Check tags
for(int i=0; i<numButtons; i++){
    UIButton *auxButton = (UIButton*) [arrayWithButton objectAtIndex:i];
    int auxTag = auxButton.tag;
    //... perform the proper operations
}

我希望我理解得很好,这可以帮到你。