我有一个代码片断,我无法工作。NSArray中的NSArray不返回我想要的图像
NSUInteger i;
//NSMutableArray *textures = [[NSMutableArray alloc] initWithCapacity:kNumTextures];
//NSMutableArray *texturesHighlighted = [[NSMutableArray alloc] initWithCapacity:kNumTextures];
NSMutableArray *textures= [[NSMutableArray alloc] init];
for (i = 1; i <= kNumTextures; i++)
{
NSString *imageName = [NSString stringWithFormat:@"texture%d.png", i];
NSString *imageNameHighlighted = [NSString stringWithFormat:@"texture%d_select.png", i];
UIImage *image = [UIImage imageNamed:imageName];
UIImage *imageHighlighted = [UIImage imageNamed:imageNameHighlighted];
//NSArray *pics = [[NSArray alloc] initWithObjects:(UIImage)image,(UIImage)imageHighlighted,nil];
NSArray *pics = [NSArray arrayWithObjects:image,imageHighlighted,nil];
[textures addObject:pics];
[pics release];
}
//select randomly the position of the picture that will be represented twice on the board
NSInteger randomTexture = arc4random()%([textures count]+1);
//extract image corresponding to the randomly selected index
//remove corresponding pictures from textures array
NSArray *coupleTexture = [textures objectAtIndex:randomTexture];
[textures removeObjectAtIndex:randomTexture];
//create the image array containing 1 couple + all other pictures
NSMutableArray *texturesBoard = [[NSMutableArray alloc] initWithCapacity:kNumPotatoes];
[texturesBoard addObject:coupleTexture];
[texturesBoard addObject:coupleTexture];
[coupleTexture release];
NSArray *pics = [[NSArray alloc] init];
for (pics in textures) {
[texturesBoard addObject:pics];
}
[pics release];
//shuffle the textures
//[texturesBoard shuffledMutableArray];
//Array with masks
NSMutableArray *masks= [[NSMutableArray alloc] init];
for (i = 1; i <= kNumMasks; i++)
{
NSString *maskName = [NSString stringWithFormat:@"mask%d.png", i];
UIImage *mask = [UIImage imageNamed:maskName];
//NSArray *pics = [[NSArray alloc] initWithObjects:mask,nil];
[masks addObject:mask];
//[pics release];
[maskName release];
[mask release];
}
//Now mask all images in texturesBoard
NSMutableArray *list = [[NSMutableArray alloc] init];
for (i = 0; i <= kNumMasks-1; i++)
{
//take on image couple from textures
NSArray *imgArray = [texturesBoard objectAtIndex:i];
UIImage *mask = [masks objectAtIndex:i];
//mask it with the mask un the array at corresponding index
UIImage *img1 =(UIImage *) [imgArray objectAtIndex:0];
UIImage *img2 =(UIImage *) [imgArray objectAtIndex:1];
UIImage *picsMasked = [self maskImage:(UIImage *)img1 withMask:(UIImage *)mask];
UIImage *picsHighlightedMasked = [self maskImage:(UIImage *)img2 withMask:(UIImage *)mask];
//Init image with highlighted status
TapDetectingImageView *imageView = [[TapDetectingImageView alloc] initWithImage:picsMasked imageHighlighted:picsHighlightedMasked];
[list addObject:imageView];
}
这里的问题是:img1和img2,不是图像,而是具有多个条目的NSArray。我无法想象为什么...在这里,任何新鲜的灵魂都可以为我提供一些线索来解决。
maaany谢谢。
你真的应该“接受”一个答案。在我看来,@ stigi的答案是正确的。 @stigi竭尽全力编写了一个写得很好,可重用的响应。请点击它左边的复选标记以接受。 – Jann 2010-05-11 22:28:35