2015-07-27 2 views
-1

Я читал много сообщений об этом вопросе, но ответов не нашел. так что я хочу перейти от своего «ViewController» к моему «SecondViewController» с изображения, выбранного из ImagePicker, это что я пробовал:Передача изображения между контроллерами просмотров

В моей ViewController:

-(IBAction)Scatta:(id)sender { 

     UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 

     if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
     { 
      [imagePickerController setSourceType:UIImagePickerControllerSourceTypeCamera]; 
     } 

     // image picker needs a delegate 
     [imagePickerController setDelegate:self]; 

     // Place image picker on the screen 
     [self presentViewController:imagePickerController animated:YES completion:nil]; 

     // Create main view controller 
     Main_VCViewController *VC = [self.storyboard instantiateViewControllerWithIdentifier:@"Main"]; 
     // Go to main 
     [self presentModalViewController:VC animated:YES]; 
} 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

     [self dismissViewControllerAnimated:YES completion:^{ 

      UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; 
      Main_VCViewController *VC = [self.storyboard instantiateViewControllerWithIdentifier:@"Main"]; 
      VC.ImmaginePresa = image; 
     [self presentModalViewController:VC animated:YES]; 

    }]; 
} 

и это мой SecondViewController:

-(void)viewDidAppear:(BOOL)animated { 
    UIImage *imm = _ImmaginePresa; 
    [_Image setImage: imm]; 
} 

Я установил по умолчанию изображение в моем SecondVC, и когда я запускаю приложение, я нажимаю кнопку «Scatta», и когда он открывает мой SecondVC, он показывает мне за 0,5/1 секунду мое изображение по умолчанию, а после этого ничего не показывает. Я попытался передать так же несколько строк, и он работает правильно.

EDIT1

ViewController:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *img = [info objectForKey:UIImagePickerControllerOriginalImage]; 


    //Instanzio il viewController della main 
    Main_VCViewController *VC = [self.storyboard instantiateViewControllerWithIdentifier:@"Main"]; 

    NSData *imageData = UIImagePNGRepresentation(img.images); 
    [[NSUserDefaults standardUserDefaults] setObject:[NSKeyedArchiver archivedDataWithRootObject:imageData] forKey:@"ImageData"]; 

    VC.ImmaginePresa = img; 

    [self dismissModalViewControllerAnimated:YES]; 
    //Vado alla main 
    [self presentModalViewController:VC animated:YES]; 

} 

SecondVC:

-(void)viewDidAppear:(BOOL)animated { 
    NSData* myEncodedImageData =[[NSUserDefaults standardUserDefaults]objectForKey:@"ImageData"]; 
    UIImage* image = [UIImage imageWithData:myEncodedImageData]; 
    [_Image setImage: image]; 
} 

Он по-прежнему не работает, тот же результат

EDIT2

С решением @SaurabhPrajapati кажется, что изображение ничтожно, потому что, когда я нажимаю на свое изображение, он ничего не делает, это возможно?

+0

попробовать с навигационным контроллером. –

+0

просто передайте изображение как NSData. –

+0

Являются ли первый и второй контроллеры просмотра связанными с segue? –

ответ

2

Я предполагаю, что вы получаете изображение в «didFinishPickingMediaWithInfo». так вот мое предложение

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; 
if(image != nil) 
{ 
     [self dismissViewControllerAnimated:YES completion:^{ 

     //define ImmaginePresa as NSData in Main_VCViewController 
     Main_VCViewController *VC = [self.storyboard instantiateViewControllerWithIdentifier:@"Main"]; 
     VC.ImmaginePresa = UIImagePNGRepresentation(image); 
     [self presentModalViewController:VC animated:YES]; 
}]; 
} 

}

и Main_VCViewController вы можете получить изображение, как,

UIImage *img = [UIImage imageWithData:self.ImmaginePresa]; 
+0

, он возвращает мне тот же результат –

Смежные вопросы