我尝试在应用程序进入前台时重新加载tableview。 在ViewController中 - > viewDidLoad中:
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(updateTableViewData:) name: @"UpdateTableViewAccueil" object:nil];
在ViewController中使用的方法:
-(void)updateTableViewData:(NSNotification *) notification
{
[self readMsgsFromDB];
[self reloadTableMsgsReceived];
}
[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateTableViewAccueil" object: nil];
从xcode启动应用程序后,第一次当应用程序进入前台时,表格会重新加载,但下次不会重新加载
你有什么建议吗?提前致谢
答案 0 :(得分:2)
在尝试接收NSNotification时重新加载数据时,我遇到了类似的问题。似乎通知是在与主线程不同的线程中收到的。以下代码帮助修复了它。
<强>夫特:强>
dispatch_async(dispatch_get_main_queue(), {self.tableView.reloadData()})
替换 self.tableView.reloadData() 使用您用于重新加载tableview的代码。
答案 1 :(得分:0)
在旁注中,您不必发布自定义通知来捕获应用程序将进入前台的事实。尝试交换这个:
[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(updateTableViewData:) name: @"UpdateTableViewAccueil" object:nil];
有了这个:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateTableViewData) name:UIApplicationDidBecomeActiveNotification object:nil];
如果可行,您可以删除发布的通知。