我想在应用程序从后台进入前台时重新加载表格,在我的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];
}
我该怎么办?我在做什么错?任何帮助,请
答案 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)
确保您的重新加载数据必须从主线程调用,否则不会重新加载。