0

我想在应用程序从后台进入前台时重新加载表,在我的应用程序中,delegate.mi 确实这样做了,但它不起作用

- (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];
}

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

4

3 回答 3

2

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

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

改用这个:

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

而且您不需要从您的 appdelegate 转播通知。

于 2013-09-16T11:46:21.697 回答
0
- (void)viewDidLoad {
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appEnteredIntoForeground:) name:UIApplicationWillEnterForegroundNotification object:nil];
}


- (void)appEnteredIntoForeground:(id)object {

    [tableView reloadData];
}
于 2013-09-16T13:14:40.877 回答
-2

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

于 2013-09-16T11:44:44.323 回答