2015-06-20 75 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