Изображение не хранится в NSMutableArray - PullRequest
0 голосов
/ 04 июня 2011

Я пытаюсь сохранить изображение в NsMutable Array. Но он не работает в этой функции. Но, в конце концов, в другой функции он работает правильно. Кто-то может сказать мне, почему он не работает.

- (void)readPlistData {

objectButtonArray = [[NSMutableArray alloc] init];   \\Use to store Buttons
editButtonArray = [[NSMutableArray alloc] init];      \\ another array use to store deletebutton(such as.crossmark button.)
selectImage = [[NSMutableArray alloc] init];

self.myPlistPath = [NSString stringWithString:[self plistPath]];

plistArray = [[NSMutableArray alloc] initWithContentsOfFile:self.myPlistPath];

for (int i =0; i< [plistArray count];i++)
{


    UIGraphicsEndImageContext();

    NSData *imageData = [plistArray objectAtIndex:i];
    currentObjectImage = [UIImage imageWithData:imageData] ; 
    [selectImage addObject:currentObjectImage]; \\value not stored in selectimage NSMutableArray

    CGRect imageSize = CGRectMake(0, 0, 100, 90);

    UIGraphicsBeginImageContext(imageSize.size); // this will crop

    [currentObjectImage drawInRect:imageSize];

    UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();

    imageButton = [[UIButton alloc]initWithFrame:CGRectMake(width, 0, 100, 90)];
    [imageButton setTag:tag];
    [imageButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    [imageButton setImage:newImage forState:UIControlStateNormal];

    CGRect backFrame = backView.frame;
    backFrame.size.width = 120+width;
    backView.frame = backFrame;

    [backView addSubview:imageButton];

    editButton = [[UIButton alloc]initWithFrame:CGRectMake(width-10, -10, 35, 35)];
    [editButton setImage:[UIImage imageNamed:@"DeleteButton.png"] forState:UIControlStateNormal];
    [editButton addTarget:self action:@selector(deleteObjectViewImage:) forControlEvents:UIControlEventTouchUpInside];
    editButton.hidden = YES;
    [editButton setTag:tag];
    [backView addSubview:editButton];
    tag++;
    width = 120 + width;

    [objectButtonArray addObject:imageButton];
    [editButtonArray addObject:editButton];

}

scrollView.contentSize = backView.bounds.size;  

}

Может ли кто-нибудь мне помочь.

1 Ответ

0 голосов
/ 07 июня 2011

Я думаю, что проблема в названии ссылки "currentObjectImage", в основном, когда вы делаете

[selectImage addObject:currentObjectImage];

, она сохраняет ссылку на "currentObjectImage", где в следующей итерации в нее загружается следующее изображение, что создает проблему.

Замените вышеуказанную строку на

[selectImage addObject:[currentObjectImage copy]];

Я думаю, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...