2

我刚刚开始编程并且已经做到了这一点,但是我现在已经为此苦苦挣扎了一段时间并且完全被卡住了。我用两副牌创建了一个 10x10 的扑克牌板。然后我在下面的 -(void)displayBoard 中制作了所有按钮。每张卡片都有一个 BOOL 属性 card.button 持有它是否应该作为按钮启用。

我将它们打开,一切正常。他们一开始是不可触碰的,然后我打开它们,他们正确地调用 (void)boardCardPressed。但是,当我在那里关闭它们时,它们以图形方式似乎已关闭,但当我触摸它们时仍在调用 (void)boardCardPressed。如果我记录按钮属性,则设置正确。我怀疑这与我添加目标而不是删除有关,但我尝试的一切都没有区别。

我在任何地方都没有找到任何帮助,因此非常感谢任何想法、提示或帮助。顺便说一句 - 我怀疑我的尝试不是最优雅的,所以那里的提示也会很棒。这是我能找到的让我的卡片图像可供选择的唯一方法:)

-(void)displayBoard{

    board = [model board];

    for (int x = 0; x < 10; x++){
        for(int y = 0; y < 10; y++){
            Card *tCard = [board getCardxpos:x ypos:y];

            UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
            button.tag = tCard.tag;            
            button.enabled = tCard.button;            

            button.adjustsImageWhenDisabled = NO;

            [button setImage:tCard.image forState:UIControlStateNormal];             

            button.frame = CGRectMake(tCard.xPos, tCard.yPos, tCard.sizeW, tCard.sizeH);            
            [button setImage:tCard.image forState:UIControlEventTouchUpInside];

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

            [(SequenceView *)self.view drawIt:button];    
        }   
    }
}


-(void)boardCardPressed:(id)sender {

    int tid = ((UIControl*)sender).tag;    
    int x = tid / 10;
    int y = tid%10;
    Card *tCard = [[model board] getCardxpos:x ypos:y];

    tCard.chosen = YES;
    tCard.button = NO;

    [self displayBoard];

}
4

1 回答 1

0

您的代码中有一些对我来说并不完全清楚的东西。据我所知,您创建了显示板并在其中包含 100 个按钮;当触摸这些按钮中的任何一个时,将boardCardPressed再次调用 并再次创建板,其 100 个按钮与原始按钮无关。

这是故意的吗?或者这可能与你不理解的行为有关?

于 2012-07-07T20:27:12.753 回答