2015-06-20 71 views
-2

將對象存儲在NSMutableArray中時,我無法更新對象的屬性,例如背景顏色或UIView的「隱藏」屬性。Objective C更新數組中的對象

NSMutableArray *myArray; 

UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 100)]; 
myView.backgroundColor = [UIColor blueColor]; 
[self.view addSubview:myView]; 
myArray[0] = myView;  

//myArray[0].backgroundColor = [UIColor redColor]; 
((UIView *)myArray[0]).backgroundColor = [UIColor redColor]; 

我第一次嘗試被註釋掉,它並不能編譯,因爲myArray的[0]返回類型爲「ID」,這樣編譯器無法識別backgroundColor屬性。

對於我的第二次嘗試,我鑄造成一個UIView,因此它承認backgroundColor屬性,但代碼不起作用(背景仍然是藍色的)。

正在轉換爲UIView創建我的視圖的副本,因此不更新我打算更新的視圖?我怎樣才能得到這個工作使用UIViews數組?

回答

2

首先,你需要初始化數組

NSMutableArray *myArray = [[NSMutableArray alloc]init]; 

然後添加一個對象數組使用

[myArray addObject:myView]; 

最後用你的代碼來改變第一對象的背景顏色

((UIView *)myArray[0]).backgroundColor = [UIColor redColor]; 
+1

初始化數組解決了我的問題。我認爲忘記初始化對象對我自己和其他新的Objective-C程序員來說是一個常見的錯誤,可能是因爲我習慣了編譯器在Java中捕獲它。感謝您的明確迴應。 – trudawg0830