如何在applicationDidBecomeActive中重新加载UIButton中的图像

时间:2011-03-01 04:54:25

标签: iphone ios uibutton reload multitasking

我有一个MenuViewController,可在应用加载时加载;它是UINavigationController的根视图。

在视图中我有一个UIButton,其中包含一个从URL加载的图像,以及一个标签(它是一张指示天气和当前温度的图片)。

一切正常,但如果我在iPhone 4上使用该应用程序,具有多任务处理,当按下主页按钮然后重新打开应用程序时,我需要UIButton图像和temp。标签重新加载。

我试过在appDidBecomeActive下的AppDelegate中调用它:

[self parseWeatherXML]; //re-parse weather data
[menuViewController reloadWeatherData]; //loads the image/label from the XML
没有运气。

我还尝试在applicationWillResign中发布menuViewController,然后在applicationDidBecomeActive中重新分配menuViewController,以便再次调用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 个答案:

答案 0 :(得分:1)

我希望你的MenuViewController成为 UIApplicationDidBecomeActiveNotification 的观察者并执行parseWeatherXML数据。我认为您将刷新URL中的数据,因此您需要等待该数据再次返回。因此,当您收到通知时,我会遵循您正在做的相同逻辑。

  

<强> UIApplicationDidBecomeActiveNotification

     

申请成为时发布   活性。应用程序处于活动状态时   它正在接收事件。一个活跃的   申请可以说是有重点的。   它在发布后获得关注,   在叠加窗口时失去焦点   弹出或设备锁定时,   并在设备获得焦点时获得焦点   解锁。

     

<强>状况

     

适用于iOS 2.0及更高版本。

     

声明

     

UIApplication.h

答案 1 :(得分:0)

您是否尝试在applicationWillResign期间使用plist等保存图像和temp,然后在applicationDidBecomeActive期间,您可以从保存的文件/标签重新加载图像和temp。只是探索的另一种选择。