我有一个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;
}
答案 0 :(得分:1)
我希望你的MenuViewController成为 UIApplicationDidBecomeActiveNotification 的观察者并执行parseWeatherXML数据。我认为您将刷新URL中的数据,因此您需要等待该数据再次返回。因此,当您收到通知时,我会遵循您正在做的相同逻辑。
<强> UIApplicationDidBecomeActiveNotification 强>
申请成为时发布 活性。应用程序处于活动状态时 它正在接收事件。一个活跃的 申请可以说是有重点的。 它在发布后获得关注, 在叠加窗口时失去焦点 弹出或设备锁定时, 并在设备获得焦点时获得焦点 解锁。
<强>状况强>
适用于iOS 2.0及更高版本。
声明
UIApplication.h
答案 1 :(得分:0)
您是否尝试在applicationWillResign期间使用plist等保存图像和temp,然后在applicationDidBecomeActive期间,您可以从保存的文件/标签重新加载图像和temp。只是探索的另一种选择。