应用程序到达前台时重新加载表无法正常工作

时间:2013-09-16 11:43:03

标签: iphone ios uitableview notifications

我想在应用程序从后台进入前台时重新加载表格,在我的app delegate.m中,我确实喜欢这样,但它无法正常工作

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    NSLog(@"applicationWillEnterForeground");
    [[NSNotificationCenter defaultCenter] postNotificationName:@"EnteredForeground"
                                                        object:nil];

}

在我的viewController中,我的工作方式与

相同
- (void)viewDidLoad
{
    [super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(whenAppEnteredIntoForeground:) name:@"EnteredForeground" object:nil];
}
- (void)whenAppEnteredIntoForeground:(id)object {
    NSLog(@"log msg");
    [tblSearch reloadData];
}

我该怎么办?我在做什么错?任何帮助,请

3 个答案:

答案 0 :(得分:2)

首先,当应用程序到达前台时,您无需重新广播通知,您可以从视图控制器注册通知。

在您的情况下,可能是在发送辅助通知之后才加载视图,这就是视图控制器无法响应的原因。使用断点将确认是否是这种情况。

请改用:

- (void)viewDidLoad {
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(whenAppEnteredIntoForeground:) name:UIApplicationWillEnterForegroundNotification object:nil];
}

您无需重新广播来自appdelegate的通知。

答案 1 :(得分:0)

- (void)viewDidLoad {
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appEnteredIntoForeground:) name:UIApplicationWillEnterForegroundNotification object:nil];
}


- (void)appEnteredIntoForeground:(id)object {

    [tableView reloadData];
}

答案 2 :(得分:-2)

确保您的重新加载数据必须从主线程调用,否则不会重新加载。