2014-12-23 2 views
0

UPDATEПросмотр не отображается в didFinishPickingMediaWithInfo

Потратив несколько часов я нашел решение для меня. Одна из проблем заключалась в том, что segue не показывался после выбора изображения.

У меня все еще есть проблема, что вкладка secondView не отображается .. Но я могу видеть изображение NOOOW !!

Но благодарю вас за помощь !!!!

Вот мой код:

//FirstView.m

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{ 
    self->takenImage = image; 
    [picker dismissModalViewControllerAnimated:NO]; 
    double delayInSeconds = 0.5; 
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
     [self performSegueWithIdentifier:@"ToSecondView" sender:self]; 
    }); 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{ 
    if ([segue.identifier isEqualToString:@"ToSecondView"]){ 
     SecondView *editViewController = 
     (SecondView *)segue.destinationViewController; 
     //editViewController.imageView.image = self->takenImage; 
     [editViewController setMyImage:takenImage]; 
    } 
} 

//SecondView.h

@property (nonatomic, strong) UIImage *myImage; 

//SecondView.m в viewDidLoad

self.imageView.image = _myImage; 

UPDATE: Для лучшего понимания, я после моего остальную часть моего кода:

FirstView:

@interface FirstView : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate> 

@end 


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    [picker dismissViewControllerAnimated:YES completion:^{ 
     SecondView *svc = [[ShowPicture alloc] initWithNibName:@"SecondView" bundle:nil]; 
     [svc setMyImage:image]; 
     [self presentViewController:svc animated:YES completion:nil]; 
    }]; 
} 

** SecondView **:

@interface ShowPicture: UIViewController 
@property (nonatomic, retain) UIImageView *imageView; 
@property (nonatomic, strong) UIImage *myImage; 



-(void)viewDidLoad{ 
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(85, 90, 150, 150)]; 
    self.imageView.image = _myImage; 
    [[self view] addSubview: imageView]; 
} 

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

Мой код:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    [picker dismissViewControllerAnimated:YES completion:^{ 
     SecondView *svc = [[SecondView alloc] initWithNibName:@"SecondView" bundle:nil]; 
     svc.imageView.Image = image; 
     [self presentViewController:svc animated:YES completion:nil]; 
    }]; 
} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"toSecondView"]){ 
     ShowPicture *showPicture = 
     (ShowPicture *)segue.destinationViewController; 
     //showPicture.imageView.image = self.imageChosen; 

    SecondView Picture *cvc = [segue destinationViewController]; 
    cvc.image = newImage; 
    } 
} 

Когда им нажав Выбрать БТН, экран переходит к представлению, где вы можете увидеть фотоальбомы ..

Что я делаю не так ?? :/ Большое спасибо

+0

Вы установили 'UIImag Делегат ePickerController'? – zaph

+0

Используете ли вы соединение segue для перехода к представлению ShowPicture или через код? Потому что в imagePickerDelegate вы вручную представляете это представление, тогда как вы также используете метод prepareForSegue. – Mrunal

ответ

1

В здесь:

ShowPicture *svc = [[ShowPicture alloc] initWithNibName:@"ShowPicture" bundle:nil]; 
    svc.imageView.Image = image; 

svc.imageView объект еще не создан.

Для решения можно определить свойство ShowPicture как:

@property (nonatomic, strong) UIImage *myImage; 

и изменить звукоизвлечения функции делегата на:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; 
    [picker dismissViewControllerAnimated:YES completion:^{ 
     ShowPicture *svc = [[ShowPicture alloc] initWithNibName:@"ShowPicture" bundle:nil]; 
     [svc setMyImage:image]; 
     [self presentViewController:svc animated:YES completion:nil]; 
    }]; 
} 

и, наконец, в viewDidLoad методе Вашего ShowPictureViewController:

self.imageView.image = _myImage; 
+0

Спасибо за ответы! @Zaph: установлен делегат UIImagePickerController. – newbie

+0

@Mrunal: соединение для segue установлено в .storyboard (Sry я опубликовал оба метода, которые я пробовал ..) – newbie

+0

Спасибо u. Я изменил свой код на ваши предложения. Но все равно то же самое. Должен ли я использовать метод prepareForSegue? – newbie

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