2013-12-06 4 views
0

Привет всем, на мой взгляд, контроллер я использую imagePickerViewПередача Изображение ImagePickerView в другой View Controller

Когда пользователь выбирает фотографию из библиотеки, я хотел бы выбранная фотография будет отображаться в другом контроллере представления.

Я в настоящее время с помощью раскадровки так, я использую этот метод:

- (void) imagePickerController : (UIImagePickerController *) picker didFinishPickingMediaWithInfo : (NSDictionary *) info { 
         
    UIImage * PhotoForEdit = self.FF_image ; 
    PhotoForEdit = [info objectForKey : UIImagePickerControllerEditedImage ] ; 
     
   FFEditingPhotoPost *VCPhotoEdit = [[FFEditingPhotoPost alloc] initWithImage:PhotoForEdit]; 
   [self performSegueWithIdentifier:@"immagine"sender:self];   
   [self.navigationController pushViewController:VCPhotoEdit animated:NO]; 
   [self dismissViewControllerAnimated:YES completion:nil]; 

} 





    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
    { 
     FFEditingPhotoPost * controller = (FFEditingPhotoPost *)segue.destinationViewController; 
     controller.FFOriginalImage = FF_image; 
    } 

Моя проблема заключается в том, что я не могу пойти с раскадровки выбрано изображение вида CONTROLLR следующий ... Где я делаю неправильно ?

Спасибо всем за советы

EDIT: вставить контроллер представления, который должен показать фото

#import "FFEditingPhotoPost.h" 
#import "UIImage+Resize.h" 

@interface FFEditingPhotoPost() 

@end 

@implementation FFEditingPhotoPost 
@synthesize FFScrollView; 
@synthesize FFImageView; 
@synthesize FFOriginalImage; 
@synthesize SelectedFoto; 
@synthesize SelectedFotoMiniature; 



- (id)initWithImage:(UIImage *)image { 
    self = [super initWithNibName:nil bundle:nil]; 
    if (self) { 
     if (!image) { 
      return nil; 
     } 

     FFOriginalImage = image; 
     // self.fileUploadBackgroundTaskId = UIBackgroundTaskInvalid; 
     // self.photoPostBackgroundTaskId = UIBackgroundTaskInvalid; 
    } 
    return self; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    FFScrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]]; 
    FFScrollView.delegate = self; 
    FFScrollView.backgroundColor = [UIColor blackColor]; 
    // self.view = FFScrollView; 

    FFImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20.0f, 42.0f, 280.0f, 280.0f)]; 
    [FFImageView setBackgroundColor:[UIColor blackColor]]; 
    [FFImageView setImage:FFOriginalImage]; 
    [FFImageView setContentMode:UIViewContentModeScaleAspectFit]; 
    FFImageView.layer.masksToBounds = NO; 
    FFImageView.layer.shadowRadius = 3.0f; 
    FFImageView.layer.shadowOffset = CGSizeMake(0.0f, 2.0f); 
    FFImageView.layer.shadowOpacity = 0.5f; 
    FFImageView.layer.shouldRasterize = YES; 


    [FFScrollView setContentSize:CGSizeMake(FFScrollView.bounds.size.width, FFImageView.frame.origin.y + FFImageView.frame.size.height + FFImageView.frame.size.height)]; 

    [self shouldUploadImage:FFOriginalImage]; 

} 
- (BOOL)shouldUploadImage:(UIImage *)anImage { 
    UIImage *resizedImage = [anImage resizedImageWithContentMode:UIViewContentModeScaleAspectFit bounds:CGSizeMake(560.0f, 560.0f) interpolationQuality:kCGInterpolationHigh]; 

    UIImage *thumbnailImage = [anImage thumbnailImage:86.0f transparentBorder:0.0f cornerRadius:10.0f interpolationQuality:kCGInterpolationDefault]; 

    // JPEG to decrease file size and enable faster uploads & downloads 
    NSData *imageData = UIImageJPEGRepresentation(resizedImage, 0.8f); 
    NSData *thumbnailImageData = UIImagePNGRepresentation(thumbnailImage); 

    if (!imageData || !thumbnailImageData) { 
     return NO; 
    } 

    SelectedFoto = [PFFile fileWithData:imageData]; 
    SelectedFotoMiniature = [PFFile fileWithData:thumbnailImageData]; 
     [SelectedFoto saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
     if (succeeded) { 
      NSLog(@"Photo uploaded successfully"); 
      [SelectedFotoMiniature saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { 
       if (succeeded) { 
        NSLog(@"Thumbnail uploaded successfully"); 
       } 
      }]; 
     } else { 
     } 
    }]; 

    return YES; 
} 
+0

Почему подталкивают контроллер представления и выполнения операции SEGUE в то же время? –

ответ

2

Я думаю PhotoForEdit = [Информация objectForKey: UIImagePickerControllerEditedImage]; Должно быть self.FF_image =

РЕДАКТИРОВАНИЕ -----

Есть несколько вещей неправильно с вашим кодом. Во-первых, вы создаете 2 копии контроллера просмотра FFEditingPhotoPost. Кто знает, кто на самом деле заканчивается наверху.

Если у вас есть раскадровка SEGUE настроить, а затем изменить код сборщика изображения просто выполнить SEGUE так:

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

    self.FF_image = [info objectForKey : UIImagePickerControllerEditedImage ] ; 

    [self performSegueWithIdentifier:@"immagine"sender:self]; 

} 

prepareForSegue Ваш код хорошо. Заметьте, что я также переключил код, который устанавливает свойство self.FF_image, поскольку это было неверно.

Теперь в вашем контроллере FFEditingPhotoPost вам не нужен метод initWithImage, просто используйте способ viewWillAppear, чтобы настроить изображение. Метод viewDidLoad вызывается перед вашим prepareForSegue, что означает, что FFOriginalImage ничтожно, пока вы пытаетесь его использовать.

Так используйте viewWillAppear так:

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [FFImageView setImage:FFOriginalImage]; 
} 
+0

Привет, Даррен, спасибо за ответ ... Ваш совет, похоже, сработал, приложение не разбивается, и все в порядке, но я все еще не вижу, как изображение прошло ... Я не понимаю, почему ... Я редактировал мои пост, вставив контроллер просмотра, который должен показывать фотографию – kAiN

+0

Удалите код вашего выхода. Вы уже распределяете VC и нажимаете его, так что не нужно и для сеге. Segue также создает VC, поэтому вы получите 2 – Darren

+0

См. Мой отредактированный ответ – Darren

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