2012-03-02 4 views
0

iPhone n00b здесь, хотя у меня есть приложение в магазине.Настройка изображения UIImageView с ViewController

У меня есть два простых ViewControllers, взятых непосредственно из шаблона приложения Utility в xCode. У меня есть два UIImageViews, по одному на каждом ViewController в раскадровке. У меня есть выходы подключены правильно (насколько я знаю), потому что я могу установить изображение первого ViewController штрафа с

[self.imageView setImage:@"test.png"]

Когда я пытаюсь сделать по существу то же самое в моем FlipsideViewController, Ничего не произошло.

- (void)selectImage:(UIImage *)img 
{ 
    NSLog(@"%@", img); 
    self.editImageView.image = img; 
    NSLog(@"%@", self.editImageView.image); 
} 

Этого код дает правильный результат после регистрации первого NSLog заявления, но вторая линия не имеет желаемый эффект, а третья линия дает (null).

EDIT: коэд обновлен, чтобы отразить факт, что я хочу отображать «img», а не другое изображение, инициализированное с использованием imageNamed, это был просто тест.

ответ

3

Если вы передаете метод UIImage, почему вы устанавливаете imageView через функцию imageNamed:?

Если вы передаете правильный UIImage, тогда вы должны просто сделать следующее.

- (void)selectImage:(UIImage *)img 
{ 
    NSLog(@"%@", img); // This is the UIImage being passed. 
    [self.editImageView setImage:img]; 
    NSLog(@"%@", self.editImageView.image); 
} 

Из того, что я вижу, это все, что необходимо. Если это неверно, обновите свой вопрос, чтобы я мог ответить соответствующим образом.

Отредактировано благодаря комментариям

Итак, из комментариев, которые я собрал то, что проблема есть.

Вы говорите, что в -(void)viewDidLoad вы можете установить изображение, что легко, с помощью метода [UIImage imageNamed:]. Это нормально, но вы хотите сделать это в отдельном методе, который вызывает проблему.

Что я предлагаю сделать для тестирования.

- (void)viewDidLoad 
{ 
     [super viewDidLoad]; 
     // Do any additional setup after loading the view from its nib. 

     UIImage *imageYouWantToPass = [UIImage imageNamed:@"test.png"]; 
     [self selectImage:imageYouWantToPass]; 

} 

Убедитесь, что метод selectImage: добавляется в файл .h, так что вы не получите каких-либо предупреждений. Я думаю, что вот что такое ответ, но если это еще не решит ваш вопрос, пожалуйста, предоставьте дополнительную информацию.

+0

Обновлено, спасибо. –

+0

Вы попробовали '[editImageView setImage: img];' вместо этого? –

+0

Да, и это не имело никакого эффекта. Изображение _will_, однако, загрузится, если я поместил код '[editImageView setImage: [UIImage imagenamed: @" test.png "]];' в метод FlipsideViewController '- (void) viewDidLoad'. Это представляет собой еще одну проблему, поскольку я не могу получить доступ к свойству img MainViewController из метода viewDidLoad для FlipsideViewController. BLEH! –

1

[self.imageView setImage:[UIImage imagenamed:@"test.png"]]

Там у отсутствуют ..

А во втором случае. Кажется, что вы подключили imageView к .xib, но не к собственности. Попробуйте использовать его без себя. Или объявить IBOutlet в собственности

0

Проверьте, правильно ли инициализирован editImageView. Первый NSLog работает правильно, значит, у вас есть правильный образ, а второй NSLog не работает, может быть, проблема с editImageView.

0

Как вы передаете UIImage вашему методу (selectImage:). Затем не нужно устанавливать imageView (UIImageView) с помощью метода imageNamed:. Поскольку у вас есть UIImage в экземпляре img, вы можете просто установить image с img внутри функции.

Если вы передаете правильный UIImage, тогда вы должны просто сделать следующее.

- (void)selectImage:(UIImage *)img 
{ 
    NSLog(@"%@", img); // here you have Image in img, so just set Image From this img. 

    [self.editImageView setImage:img]; 
    NSLog(@"%@", self.editImageView.image); 
} 

Надеюсь, он очистит все ... !!!!

+0

Спасибо, но моя проблема заключается не в отображении неправильного изображения, а в отображении изображения вообще. Я не сделал этого ясно и изменил свой вопрос, чтобы это отразить. –

+0

@stevesullivan NP, вам нужно передать 'Image' этому методу (' selectImage'), когда вы вызываете этот метод. Как '[self selectImage: [UIImage imageNamed: @" myImage.png "]];' – Kamarshad

+0

Да, Я это понимаю, и тот факт, что первая инструкция NSLog печатает правильно, подтверждает это. Я знаю, что img передается правильно. Беда в том, что [self.editImageView setImage: img]; похоже, не имеет никакого эффекта, то есть NSLog (@ "% @", self.editImageView.image); возвращает (null). –