Как перезагрузить изображение в UIButton в приложении DidBecomeActive - PullRequest
1 голос
/ 01 марта 2011

У меня есть MenuViewController, который загружается при загрузке приложения; это корневое представление UINavigationController.

В представлении у меня есть кнопка UIB с изображением, которое загружается с URL-адреса, а также метка (это изображение, показывающее погоду и текущую температуру.).

Все работает нормально, но если я использую приложение на iPhone 4 с многозадачностью, когда нажимается кнопка «Домой», а затем приложение открывается, мне нужно изображение UIButton и темп. этикетка для перезагрузки.

Я пытался вызвать это в моем AppDelegate в applicationDidBecomeActive:

[self parseWeatherXML]; //re-parse weather data
[menuViewController reloadWeatherData]; //loads the image/label from the XML

без удачи.

Я также попытался освободить menuViewController в applicationWillResign, а затем перераспределить menuViewController в applicationDidBecomeActive, чтобы метод viewDidLoad вызывался снова, оба способа просто приводили к сбою моего приложения.

Любая помощь приветствуется!

EDIT Вот мой метод, который вызывается с уведомлением:

- (void)reloadWeather
{
[self parseWeatherXML];
UIImage *img = [UIImage imageWithData: [NSData dataWithContentsOfURL: [NSURL URLWithString:iconURL]]];
if (img != nil) 
{ 
    NSLog(@"setting image");
    [weatherButton setImage:img forState:normal];
    img = nil; 
}
currentTemp = [currentTemp stringByAppendingString:@"°F"];
[tempLabel setText:currentTemp];
tempLabel.adjustsFontSizeToFitWidth = YES;
if([self isIPad])
{
    tempLabel.textAlignment = UITextAlignmentRight;
    [tempLabel setFont: [UIFont systemFontOfSize: 45.0]];
}

currentTemp = nil;
}

Ответы [ 2 ]

1 голос
/ 01 марта 2011

Я бы хотел, чтобы ваш MenuViewController стал наблюдателем UIApplicationDidBecomeActiveNotification и выполнял данные parseWeatherXML. Я думаю, вы обновите данные с URL-адреса, поэтому вам придется подождать, пока эти данные не вернутся снова. Поэтому я бы следовал той же логике, что и вы, когда получаете это уведомление.

UIApplicationDidBecomeActiveNotification

Добавлено, когда приложение становится активный. Приложение активно, когда это получение событий. Активный Можно сказать, что приложение имеет фокус. Он получает фокус после запуска, теряет фокус при наложении окна всплывает или когда устройство заблокировано, и получает фокус, когда устройство разблокирован.

Наличие

Доступно в iOS 2.0 и более поздних версиях.

Объявлено в

UIApplication.h

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

Вы пытались сохранить изображение и темп, используя plist или что-то еще, во время applicationWillResign, а затем во время applicationDidBecomeActive вы можете перезагрузить изображение и темп из сохраненного файла / метки. Просто еще один вариант для изучения.

...