从applicationWillEnterForeground重新加载TableView

时间:2014-10-24 17:17:47

标签: ios objective-c xcode

我尝试在应用程序进入前台时重新加载tableview。 在ViewController中 - > viewDidLoad中:

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(updateTableViewData:) name: @"UpdateTableViewAccueil" object:nil]; 

在ViewController中使用的方法:

-(void)updateTableViewData:(NSNotification *) notification
{
[self readMsgsFromDB];
[self reloadTableMsgsReceived];
}
在appDelegate.m中 - > applicationWillEnterForeground

[[NSNotificationCenter defaultCenter] postNotificationName: @"UpdateTableViewAccueil" object: nil];

从xcode启动应用程序后,第一次当应用程序进入前台时,表格会重新加载,但下次不会重新加载

你有什么建议吗?提前致谢

2 个答案:

答案 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];

如果可行,您可以删除发布的通知。