2011-08-04 25 views
1

我有不同的UILabels,我想隱藏使用for循環。隱藏NSMutableArray中的所有UILabels

@interface MyViewController : UIViewController { 
NSMutableArray * labelArray; 
} 
@property (nonatomic, retain) IBOutlet UILabel *label1, *label2, *label3; 
... 
-(void)viewDidLoad { 
[super viewDidLoad]; 
[labelArray initWithObjects:label1,label2,label3,nil]; 

for(int i=0; i<sizeof(labelArray); i++){ 
    UILabel *label = [labelArray objectAtIndex:i]; 
    label.hidden = !label.hidden; 
} 
} 

執行此操作時,標籤不會隱藏。他們已經在Interface Builder中「迷上」了。我做錯了什麼?謝謝!

+1

1.你有沒有alloc'd labelArray? 2.不要使用sizeof(labelArray),而是使用[labelArray count]來確定索引範圍。不要忘記labelArray是一個指針,sizeof()將返回指針大小。 – viggio24

回答

3

這不是sizeof的用途。這是一個編譯器結構,它告訴你一個值佔用了多少字節,它不知道運行時在NSMutableArray中有多少個元素。你想:

for (UILabel *label in labelArray) { 
    label.hidden = !label.hidden; 
} 

如果不工作,那麼你的數組中不包含的對象,你相信它 - 很可能,你忘了實際創建陣列 - 簡單地發送init爲零不創建一個對象。無論哪種方式,你應該可以做labelArray = [[NSMutableArray alloc] initWithObjects:label1,label2,label3,nil];allocinit一起走手套。

+0

不幸的是我今天的選票不足。 –

+0

就是這樣,我忘記了明確分配。謝謝! –