当我收到推送通知时,如何重新加载tableview?

我有一个iPhone应用程序,我在其中添加推送通知。

当我收到推送通知时,我需要转到特定视图,在此处我在调用Web服务后加载表视图。 问题是当我站在同一个观点时。 如果我收到推送消息,我需要在前台和后台重新加载tableview。 但是,当我这样做时,它无法正常工作。 我该如何实现这一目标?

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { NSLog(@"########################################didReceiveRemoteNotification****************************###################### %@",userInfo); // Check application in forground or background if (application.applicationState == UIApplicationStateActive) { if (tabBarController.selectedIndex==0) { NSArray *mycontrollers = self.tabBarController.viewControllers; NSLog(@"%@",mycontrollers); [[mycontrollers objectAtIndex:0] viewWillAppear:YES]; mycontrollers = nil; } tabBarController.selectedIndex = 0; //NSLog(@"FOreGround"); //////NSLog(@"and Showing %@",userInfo) } else { tabBarController.selectedIndex = 0; } } 

您可以尝试使用本地通知NSNotificationCenter在收到推送通知时重新加载您的表。

收到推送通知后,会触发您的本地通知。 在视图控制器中,侦听本地通知并执行任务。

例如:

在你的didReceiveRemoteNotification中:

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

在ViewController中添加Observer(在viewDidLoad ):

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

并实现以下方法:

 - (void)reloadTable:(NSNotification *)notification { [yourTableView reloadData]; } 

同时删除viewDidUnloadviewWillDisappear中的观察者。

Swift 3版本:

在didReceiveRemoteNotification中

 NotificationCenter.default.post(name: NSNotification.Name(rawValue: "reloadTheTable"), object: nil) 

在ViewController中添加Observer(在viewDidLoad中):

 NotificationCenter.default.addObserver(self, selector: #selector(self.reloadTable), name: NSNotification.Name(rawValue: "reloadTheTable"), object: nil) 

并在viewWillDissapear

  NotificationCenter.default.removeObserver("reloadTheTable")