I am trying to update an image on the Viewcontroller
, I am using ImagePickerController
and I could able to see chosenImage
has data, and I assign it. When image is chosen and then this viewcontroller
is loading again, I could able to debug to see whether or not it hits loadUserProfile
method, yes it is. But UIImage
is getting nil in somewhere and somehow.
@property (strong, nonatomic) UIImage *userPicImage;
@property (weak, nonatomic) IBOutlet UIImageView *userProfileImage;
- (void)viewDidLoad {
[super viewDidLoad];
[self loadUserProfile];
}
-(void)loadUserProfile
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString * userImageURL = [defaults objectForKey:@"imageURL"];
bool isReload = [defaults boolForKey:@"isReload"];
if(isReload)
{
//self.userPicImage is always nil
[self.userProfileImage setImage:self.userPicImage];
[defaults setBool:false forKey:@"comingBack"];
[defaults synchronize];
}
}
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImagePickerControllerSourceType source = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] ? UIImagePickerControllerSourceTypeCamera : UIImagePickerControllerSourceTypeSavedPhotosAlbum;
UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
// userPicImage is not nil here!
self.userPicImage = chosenImage;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:true forKey:@"isReload"];
[defaults synchronize];
[picker dismissViewControllerAnimated:YES completion:^{
if (source == UIImagePickerControllerSourceTypeCamera) {
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
}
}];
}
viewdidload
is called the viewcontroller
is loaded as a new one reference, all of its reference outlets and variables are set to new. In your case userPicImage
is initiated as new object so logically there wont be any content in it.userdefaults
and retrieve it from there.