2012-02-11 18 views
1

iはその16枚のラベルので、4人のプレーヤーのために、このコードのviewDidLoadでこれは簡単な方法ですか? Q</p> <p>よう

K1player1D.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"K1scoredLabel1"]; 
K1player1L.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"K1scorelLabel1"]; 
K1player1K.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"K1scorekLabel1"]; 
K1player1Q.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"K1scoreqLabel1"]; 
K1player1T.text = [[NSUserDefaults standardUserDefaults] objectForKey:@"K1scoretLabel1"]; 

を、持っています。それを行うためのより短い方法/コードはありますか?

+0

すべてのラベルが同じK1scoredLabel1値を使用していることを意味しましたか、それとも誤植ですか? –

+0

上記のラベルはプレーヤー1用ではありません。私は他の3人のプレイヤーよりも多くのプレイヤーを持っていますので、2番目のプレーヤーK1player2D、K1player2L .....となります。残りの1つは20ラベルない16、各プレーヤーのための5つのラベルをcoz – aLFaRSi

答えて

0

あなたはNSMutableArrayは、その中に、ループ内のすべてのUILabelを埋める使用することができます

int i=1; 
for(Player in ArrayOfUILabel){ 
    Player.text = [[NSUserDefaults standardUserDefaults] objectForKey:(@"K1scoredLabel%d",i)]; 
    i++; 
} 
+0

どのようにすべての選手のための配列を作る? K1player2D、K1player2L、.......、 – aLFaRSi

+0

まであなたは配列の配列を作ることができます...あなたはK1Playerと子K1Player1Dを持つ親配列で作ることができます、K1Player1L ..... – JackTurky

0

EDIT

別があり、私はNSDictionaryの

NSDictionary * playerDict = [NSDictionary dictionaryWithObjectsAndKeys: 
            K1player1D,@"K1scoredLabel1", 
            K1player1L,@"K1scorelLabel1", 
            K1player1K,@"K1scorekLabel1", 
            K1player1Q,@"K1scoreqLabel1", 
            K1player1T,@"K1scoretLabel1",nil]; 

for(NSString * key in [playerDict allKeys]){ 
    PlayerObject * player = [playerDict objectForKey:key]; 
    player.text = [[NSUserDefaults standardUserDefaults] objectForKey:key]; 
} 
+0

これはlabel.textを埋めるでしょう。私は指定したラベルを持っています。 – aLFaRSi

+0

label.textはforループにあり、あなたのプレーヤーオブジェクトのそれぞれを参照しています。私は彼らがラベルであると仮定しました。 –

+0

ありがとうございました:)私の悪い – aLFaRSi

0

に配置しますJoelsの答えをKVC(Key value coding)と組み合わせて使用​​する方法です。それは特に良いアプローチだ場合、私は知らないが、私は完全を期すためにそれを含めました:

NSDictionary * playerDict = [NSDictionary dictionaryWithObjectsAndKeys: 
           @"K1player1D",@"K1scoredLabel1", 
           @"K1player1L",@"K1scorelLabel1", 
           @"K1player1K",@"K1scorekLabel1", 
           @"K1player1Q",@"K1scoreqLabel1", 
           @"K1player1T",@"K1scoretLabel1",nil]; 

for(NSString * key in [playerDict allKeys]){ 
    NSString *labelName = [playerDict objectForKey:key]; 
    UILabel *label = [self valueForKey:labelName]; // grab the correct label using KVC 
    label.text = [[NSUserDefaults standardUserDefaults] objectForKey:key]; 
} 

ラベル名はNSUserDefaultsのキーにマッチした場合、これは、あなたはできる(簡略化することができ辞書の代わりに名前の配列を使用するだけです)。

関連する問題