如何通过委托调用类的方法(多任务方法)?

时间:2011-01-19 05:22:21

标签: iphone iphone-sdk-3.0 ios4

每次用户返回我的应用程序时,我都需要在我的一个类上调用“刷新方法”(多任务处理)。看来,对于多任务处理,我需要通过app委托执行此操作。那么在我自己的类上调用“刷新方法”的最佳方法是什么,但是从app delegate?

2 个答案:

答案 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。在那里写下你的刷新逻辑。