У меня есть 2 сцены в моем проекте cocos2d.В моей первой сцене у меня есть кнопка, которая открывает контроллер UIImagePicker, который позволяет мне выбирать изображение с камеры.Я сохраняю изображение в NSUserDefaults путем преобразования моего UIImage в NSData.См. Приведенный ниже код
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
// Access the uncropped image from info dictionary
[myController dismissModalViewControllerAnimated:YES];
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
CGRect myRect = CGRectMake(image.size.width/2-160, image.size.height/2-160, 320, 320);
UIImage *resultImage = [self cropUIImage:image atRect:myRect];
NSData *imageData;
imageData = [NSKeyedArchiver archivedDataWithRootObject:resultImage];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:@"camera" forKey:@"pictureSource"];
[defaults removeObjectForKey:@"picId"];
[defaults setObject:imageData forKey:@"picId"];
[defaults synchronize];
[picker release];
//move to screen
[[CCDirector sharedDirector] replaceScene: [CCTransitionSlideInR transitionWithDuration:0.5f scene:[cameraImageScene node]]];
}
Затем я заменяю экран на экран изображения камеры, где я отображаю изображение с помощью спрайта.
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *imageData;
imageData = [defaults objectForKey:@"picId"];
UIImage *imageU = [NSKeyedUnarchiver unarchiveObjectWithData: imageData];
CCSprite *image = [CCSprite spriteWithCGImage:[imageU CGImage] key:@"cam"];
image.scale = 0.75f;
[image setPosition:ccp(winSize.width/2-3,287)];
[self addChild:image z:2];
В этом слое у меня есть кнопка возврата, которая принимаетпользователь вернулся к Первой сцене.Когда я выбираю изображение из галереи в первый раз, все работает нормально.Но когда я касаюсь назад и затем выбираю другое изображение, все еще старый выбор отображается как изображение в спрайте.
Есть какие-нибудь подсказки?