每次用户返回我的应用程序时,我都需要在我的一个类上调用“刷新方法”(多任务处理)。看来,对于多任务处理,我需要通过app委托执行此操作。那么在我自己的类上调用“刷新方法”的最佳方法是什么,但是从app delegate?
答案 0 :(得分:2)
如Vin所述,您可以在applicationWillEnterForeground方法中添加它。 要更新UI,可以将应用程序委托设置为具有对视图控制器的引用,并从那里调用更新方法。或者更好的是,您可以使用NSNotificationCenter简单地通知您的其他类更新。
如果您决定从应用程序委托添加对视图控制器的引用,则只需创建属性即可。这是一种方法。但请注意,它仍取决于项目的结构。
SampleAppDelegate.h
SampleViewController *viewController;
...
@property (nonatomic, retain) SampleViewController *sampleViewController;
...
SampleAppDelegate.m
...
@synthesize sampleViewController;
...
// don't forget to release in dealloc
[sampleViewController release]
...
然后,您可以在加载视图控制器的任何位置分配app delegate的sampleViewController属性的值。因此,例如,如果您以编程方式在app delegate的didFinishLaunchingWithOptions方法上初始化视图控制器,只需将其分配到那里。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
SampleViewController *_sampleViewController = [[SampleViewController alloc] initWithFrame:CGRectMake(0,0,320,480)];
self.sampleViewController = _sampleViewController;
[window addSubview:_sampleViewController.view];
[sampleViewController release];
[self.window makeKeyAndVisible];
return YES;
}
如果您将视图控制器加载到应用程序委托之外,则需要通过sharedApplication的委托属性访问应用程序委托。
((SampleAppDelegate*)[UIApplication sharedApplication] delegate).sampleViewController = _sampleViewController;
然后,您可以从applicationWillEnterForeground方法调用update方法。
- (void)applicationWillEnterForeground:(UIApplication *)application {
/*
Called as part of the transition from the background to the active state: here you can undo many of the changes made on entering the background.
*/
[self.sampleViewController updateMyView];
}
答案 1 :(得分:1)
applicationWillEnterForeground
。在那里写下你的刷新逻辑。