0

私は地元の学校システム向けの教育ゲームに取り組んでいます。このゲームでは、生徒に 6 つの数字が提示され、7 番目の数字に等しくなるようにできるだけ多くの数字を使用する必要があります。数字は、という配列に格納されます。 currentHand であり、数字は画面上のボタンにテキストとして表示される必要があります。問題は、数字を組み合わせたときに、それに応じてボタンの値を変更する必要があることです。値 1 のボタンと値 2 のボタンの 2 つのボタンを追加するとします。値 3 が配列に追加され、値 1 と 2 が削除され、1 つのボタンが非表示になり、もう 1 つのボタンが更新される必要があります。 IBOutletCollection でこれを試すように言われましたが、私はまだ客観的な C に慣れていないので、IBOutletCollection を使用してこれを行う方法がわかりません。

{1,2,3,4,5,6}

各ボタンには1つの値が割り当てられますが、リストが次のように変更されました

{1,2,3,4,11}

数字 6 を表示しているボタンが消え、数字 5 を保持しているボタンが 11 に変わりますが、私が言ったように、これを達成する方法がわかりません。

このような新しいメンバーの写真を表示できないので、IBOutletCOllectionをセットアップしようとした方法にリンクしました。

以下は currentHand をインスタンス化するコードです

-(NSMutableArray *) currentHand{
    if (_currentHand == nil) {
        _currentHand = [[NSMutableArray alloc]init];

    }
    self.currentHand = self.myDeck.giveHand;
    return _currentHand;

}

これに関するアドバイスは大歓迎です。

4

1 に答える 1

0

この問題にアプローチする 1 つの方法を次に示します。コメントで述べたように、ボタンをクリックしたときに番号を追跡するための配列 (タイトルの元の番号を提供するための配列) や IBOutletCollection の必要性はないと思います。

したがって、以下の例では、単一のビュー プロジェクトを作成し、ビュー コントローラーのビューに 6 つのボタンを追加し、すべてのタグを 1 に設定して、それらすべてを 1 つのアクション メソッド、buttonPressed: に接続しました。ビューのサブビューをループするだけで必要なことを実行できるため、ボタン用のアウトレットは使用しません。この例ではタグは実際には必要ありませんが、ビューに他のボタンがある場合、タグは、これらの 6 つのゲーム ボタンを他のボタンと区別する方法です。

これがまさにあなたが求めていた外観であるかどうかはわかりませんが、試してみて、それに近いかどうかを確認してください.

@interface ViewController : UIViewController

@property (assign) int total;
@property (retain) UIButton *previousButton;


#import "ViewController.h"

@implementation ViewController
@synthesize previousButton,total;

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.total = 0;
    NSMutableArray *theData = [NSMutableArray arrayWithObjects:@"1",@"3",@"5",@"7",@"8",@"4",nil];
    for (id obj in [self.view subviews]) {
        if ([obj isKindOfClass:[UIButton class]] && [obj tag] == 1) {
            [(UIButton *)obj setTitle:theData.lastObject forState:UIControlStateNormal] ;
            [theData removeLastObject];
        }
    }
}

-(IBAction)buttonPressed:(UIButton *)sender {
    self.total += sender.titleLabel.text.intValue;
    [sender setTitle:[NSString stringWithFormat:@"%d",self.total] forState:UIControlStateNormal];
    self.previousButton.hidden = YES;
    sender.enabled = NO;
    [sender setTitleColor:[UIColor lightGrayColor] forState:UIControlStateDisabled];
    self.previousButton = sender;

}

于 2012-07-28T22:23:31.177 に答える