2012-02-11 69 views
1

喜歡將q有沒有更簡單的方法來製作這樣的東西?

我有這樣的代碼

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"]; 
在viewDidLoad中

,四名球員,所以它的16個標籤。有沒有更簡單的方法/代碼來做到這一點?

+0

你的意思是你的所有標籤使用相同的K1scoredLabel1值,還是一個錯字? – 2012-02-11 00:23:26

+0

沒有上面的標籤是爲玩家1,我確實有更多的三個其他球員,所以這將是第二個球員K1player2D,K1player2L .....等所有其餘的一個,並排序它將是20標籤不是16,每個玩家的5個標籤 – aLFaRSi 2012-02-11 00:28:34

回答

0

你可以使用NSMutableArray補全UILabel內,並在一個循環:

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

如何爲所有玩家制作陣列?它必須是K1player1D,K1player1L,等等,直到K1player2D,K1player2L,......., – aLFaRSi 2012-02-11 00:30:24

+0

你可以使數組的數組...你在父數組中只有K1Player和在子K1Player1D ,K1Player1L ..... – JackTurky 2012-02-11 00:40:31

0

編輯

我將它們放置在一個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 2012-02-11 00:33:57

+0

label.text是在for循環,並引用您的每個球員對象。我只是假設他們是標籤。 – 2012-02-11 00:34:57

+0

謝謝你:)我的壞 – aLFaRSi 2012-02-11 00:39:41

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的(那麼你可以匹配的鑰匙只需使用名稱數組而不是字典)。