мне нужно инициализировать новый вид? - PullRequest
0 голосов
/ 14 марта 2011

Я признаю, что я новичок в Objective-C, но, думаю, зашел довольно далеко. Теперь у меня проблема, и мне нужна помощь.

В моем приложении я отображаю изображения в портретном режиме среди другой информации и хочу отображать их в полноэкранном режиме в ландшафтном режиме. Я узнал, что вы делаете это, определяя файл Landscape m, h и nib, и загружаете этот вид, когда устройство перемещается в альбомную ориентацию (работа с наблюдателем), верно?

В портретном режиме изображения в конечном итоге зависят от взаимодействия с пользователем, поэтому необходимо указать классу Landscape, какое изображение отображать. Я создал метод putImage в классе Landscape

-(void) putImage:(NSString *)theImage {

    pict.image = [UIImage imageNamed: theImage];

    NSLog(@"PICT  %@",pict.image);
    NSLog(@"IMAGE %@",theImage);
}

и назовите его из портрета, и вот вам вопрос:

NSString *actualImage = [NSString stringWithFormat:@"Picture%i.jpg",selected];
pict.image = [UIImage imageNamed: actualImage];
[landscapeViewController putImage:actualImage];

, который прекрасно работает каждый раз , кроме самого первого . Поэтому, что бы я ни делал, мне сначала нужно, чтобы приложение загрузило новое изображение, а также изменило альбомную ориентацию (изображение не отображается) любым способом. Затем после этого всегда работает отображение правильных изображений.

Я добавил отладочную информацию и увидел, что правильное изображение назначено пикту в ландшафтном классе - однако, похоже, его нужно отобразить, прежде чем оно действительно установит изображение.

Любая помощь, которую вы, ребята, могли бы оказать?

Ответы [ 2 ]

0 голосов
/ 15 марта 2011

спасибо за все подсказки и пытается помочь. Теперь я нашел решение сам ... вот что я сделал:

1) в LandscapeViewController.h я определил строку NSString:

@interface LandscapeViewController : UIViewController
{
    IBOutlet UIImageView *pict;
    NSString *actualImage;
}

2) Я изменил метод putImage, чтобы присвоить только имя изображения моей локальной переменной NSSTRING:

-(void) putImage:(NSString *)theImage {

    actualImage = theImage;

    [actualImage retain];
}

3) загрузка изображения, которое я делаю только в viewWillAppear:

- (void)viewWillAppear:(BOOL)animated {

    pict.image = [UIImage imageNamed: actualImage];

    [super viewWillAppear:animated];
}

Таким образом, ответ на мой вопрос почти получен - я думаю, что эта проблема возникла, потому что я установил изображение перед первой загрузкой представления, чтобы оно не было создано. Я смог вызвать метод, но у меня не было объекта Image для установки ... это звучит логично для вас, ребята?

Еще раз всем спасибо!

0 голосов
/ 14 марта 2011

Не уверен, что это так, поскольку ваш пример кода довольно редок.Но когда вы загружаете свою первую картинку, вы делаете это в init?Если это так, попробуйте сделать это в viewWillAppear или viewDidAppear.

...