我正在尝试使用UIImageViews加载NSMutableArray。一切都很好。
不幸的是,我不知道如何在可变数组中使用这些对象。
以下是一些代码:
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
NSMutableArray *array = [NSMutableArray new];
[array loadWithObject:(UIImageView *)imageView];
[imageView release];
这就是我所做的事情。这就是我想要做的事情:
[array objectAtIndex:5].center = GCRectMake(0, 0);
但这不起作用。我怎么能这样做?
答案 0 :(得分:3)
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
NSArray *array = [NSArray arrayWithObject:imageView];
[imageView release];
[[array objectAtIndex:0] setCenter:CGPointMake(0.0,0.0)];
首先,没有方法-[NSMutableArray loadWithObject:]
。同样,对于您的示例,您甚至不需要可变数组。可变对象有它们的位置,但我通常会尝试使用不可变对象;因此,我使用了NSArray
。
接下来,在将对象添加到数组时,永远不需要对对象进行类型转换。有几个原因导致您的示例不起作用:
您正在访问数组中的第六个(从一个开始)对象。该索引是否有UIImageView
的实例?
出于某种原因,只有当编译器知道您要向其发送消息的对象的类型时,getter和setter的点符号才有效。由于数组中出现的对象类型在编译时不明确,因此不能使用点符号。相反,只需使用老式的Objective-C方法发送语法(“括号和冒号”)。
最后,它是核心图形,而不是 Gore Craphics :因此前缀为CG
,而不是GC
。此外,-[UIImageView setCenter:]
需要CGPoint
,而不是CGRect
。所以你想要的功能是CGPointMake
。
祝你好运!如果这有助于澄清某些问题,请告诉我。
答案 1 :(得分:3)
我认为你应该参考NSMutableArray。
但是,我只是概述了NSMutableArray。
NSMutableArray *anArray=[[NSMutableArray alloc] init];
[anArray addObject:@"Sagar"];
[anArray addObject:@"pureman"];
[anArray addObject:@"Samir"];
NSMutableArray *anArray=[[NSMutableArray alloc] init];
UIImageView *imgV1=[[UIImageView alloc] initWithFrame:CGRectMake(10,50,60,70)];
UIImageView *imgV2=[[UIImageView alloc] initWithFrame:CGRectMake(10,110,60,70)];
UIImageView *imgV3=[[UIImageView alloc] initWithFrame:CGRectMake(10,170,60,70)];
UIImageView *imgV4=[[UIImageView alloc] initWithFrame:CGRectMake(10,210,60,70)];
[anArray addObject:imgV1];
[anArray addObject:imgV2];
[anArray addObject:imgV3];
[anArray addObject:imgV4];
[imgV1 release];
[imgV2 release];
[imgV3 release];
[imgV4 release];
当你使用数组中的一个图像时,只需记下这个东西
UIImageView *x=[anArray objectAtIndex:0];
希望以上描述适合您。