我第一次,我希望這不僅是我的問題。改變數組中所有對象的屬性的for-loop問題
最重要的是,我創建並完成了所有沒有.nib,.xib或storyboard的東西,而且對於Xcode來說是相當新的東西。
問題描述:
我創造了一系列的標籤,即進入一個陣列中的所有程序的。
int i低於或等於4否則它不會觸發。
int i = (int)[players count];
if (i<=4) {
nameLabel = [[UILabel alloc]initWithFrame:CGRectMake(self.view.bounds.size.width-(self.view.bounds.size.width/3)-20*widthmultiplayer, self.view.bounds.size.height-((50*heightmultibplyer)*i)-50*heightmultibplyer, (self.view.bounds.size.width/3), 50*heightmultibplyer)];
nameLabel.text = enterName.text;
[nameLabel setFont:[UIFont fontWithName:@"Arial-BoldMT" size:fontSize]];
[nameLabel setTextAlignment:NSTextAlignmentRight];
[self.view addSubview:nameLabel];
players[i] = nameLabel;
NSLog(@"index: %i , name:%@", i, nameLabel.text);
enterName.text = @"";
}
然後以編程方式隱藏所有標籤與下面的代碼
for (UILabel *label in players) {
label.hidden = YES;
}
現在有趣的部分 - 當我想告訴他們再次使用
for (UILabel *label in players) {
label.hidden = NO;
}
它不顯示最後一個條目。
含義:
- 如果我只有1項就說明沒有
- 如果我有3項只顯示2
- 等等等等...
有趣的是我的數組日誌顯示所有對象,顯示每個對象的正確索引和隱藏狀態爲false(-so它應該是什麼)。
試圖通過
[self.view bringSubviewToFront:label]
帶來了看法正面但不會正常工作。
我不明白爲什麼。關於我做錯什麼的答案和提示將不勝感激。
---- ----編輯我 找到一個解決辦法,以我的問題,也許這可以幫助別人: 我一點點做這個改變的隱藏價值的變化:
for (UILabel *label in players) {
[label removeFromSuperview];
label.hidden = NO;
[self.view addSubview:label];
}
外觀俗氣,俗氣,但起作用。 如果有人可以幫助我找到解決方案或重大缺陷,我會非常喜歡它。
@Anna感謝名單編輯 – Belraim
爲什麼的原因的原因你是否將返回值轉換爲整數?這在構建32位和64位時可能會導致問題。 – Joride
您是否記錄了'int i =(int)[players count]'? –