2014-01-23 1 views
5

Мне бы хотелось, чтобы изображение появилось на втором экране, но я не вижу никакой фотографии. Я не знаю почему. Я сделал это:UIImage and prepareforSegue не пропускает изображение

FirstClassViewController.m:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
     if ([[segue identifier] isEqualToString:@"ShowCover"]) { 
      MovieImageViewController *photo = [segue destinationViewController];  
      photo.cover.image = [UIImage imageNamed:@"helloWorld.jpg"]; 
      } 
     } 

SecondClassViewController.m:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self cover]; 
} 

крышка является свойством UIImageView, что я создал на SecondClassViewController.

ответ

6

Когда вы вызываете prepareForSegue:sender: выходы из вашего пункта назначенияViewController еще не установлены. Это означает, что ваше имущество photo.cover по-прежнему ноль.

Что вы можете сделать, это создать UIImage свойство на вашем MovieImageViewController и сделать что-то вроде:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
     if ([[segue identifier] isEqualToString:@"ShowCover"]) { 
      MovieImageViewController *photo = [segue destinationViewController];  
      photo.image = [UIImage imageNamed:@"helloWorld.jpg"]; 
     } 
} 

и на вашем -viewDidLoad метод:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.cover.image = self.image; 
} 
+0

, но self.image не работает, потому что это не свойство – user1911

+0

и photo.image не должно быть потому, что изображение это не свойство, свойство является обложкой, и оно находится в MovieImage – user1911

+1

, поэтому я сказал, что «что вы может сделать это ** создать ** свойство UIImage ... " –

2

Я предполагаю, что «обложка» - это свойство просмотра изображения вашего класса MovieImageViewController? Если да, не делайте этого.

Вы должны рассматривать другие представления диспетчера видов как частные.

Вместо этого настройте свойство изображения в вашем классе MovieImageViewController. Установите THAT в свой метод prepareForSegue, а затем в режиме MovieImageViewControllerWillAppear: анимированный метод, установите изображение в ваше «обложку» изображения. Задача решена.

EDIT: Для уточнения

Добавьте следующие строки в заголовке (.h) файл для своего класса MovieImageViewController:

@interface MovieImageViewController 

//This property is the line to add 
@property (nonatomic, strong) UIImage *coverImage; 

//your other stuff goes here. 

@end 

Затем в файле .m:

@implementation MovieImageViewController 

- (void) viewWillAppear: animated 
{ 
    [super viewWillAppear: animated]; 
    //Add the following code to your viewWillAppear:animated method 
    if (self.coverImage != nil) 
    self.cover.image = self.coverImage; 
} 

@end 
+0

Да, крышка является UIImageView свойство моего MovieImageVC, но я не понимаю, что вам жаль .. – user1911

+0

@ user1911, я добавил образец кода в свой ответ, чтобы уточнить. –

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