2

私はプログラミングを始めたばかりで、ここまで来ましたが、しばらくこれに苦労しており、完全に立ち往生しています。2 つのデッキから 10x10 のトランプ ボードを作成しました。次に、以下の -(void)displayBoard ですべてのボタンを作成しました。各カードには、ボタンとして有効にするかどうかを保持する BOOL プロパティ card.button があります。

私はそれらをOKに切り替えており、すべて正常に動作しています。それらはアンタッチャブルから始まり、次にスイッチをオンにすると、(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

あなたのコードには、私には完全に明確ではないものがあります。私が見る限り、displayBoard を作成し、そこに 100 個のボタンを含めます。これらのボタンのいずれかがタッチされると、boardCardPressedが再度呼び出され、元のボタンとは関係のない 100 個のボタンを含むボードが再度作成されます。

これはそうであるという意味ですか?それとも、これはあなたが理解していない行動に関係している可能性がありますか?

于 2012-07-07T20:27:12.753 に答える