Настройка изображения UIImageView из ViewController - PullRequest
0 голосов
/ 02 марта 2012

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

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

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

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

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

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

РЕДАКТИРОВАТЬ: код обновляется, чтобы отразить тот факт, что я хочу отобразить «img», а не другое изображение, инициализированное с помощью imageNamed, это был просто тест.

Ответы [ 4 ]

3 голосов
/ 02 марта 2012

Если вы передаете 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, чтобы вы не получали никаких предупреждений. Я думаю, что это то, что ответ, но если это все еще не решает ваш вопрос, пожалуйста, предоставьте больше информации.

1 голос
/ 02 марта 2012

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

Там тебя не хватает ..

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

0 голосов
/ 02 марта 2012

Когда вы передаете 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 голосов
/ 02 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...