¿Cómo recargo la vista de tabla cuando recibo la notificación push?

Tengo una aplicación de iPhone en la que estoy agregando notifications push.

Cuando recibo la notificación de inserción, necesito ir a una vista en particular donde estoy cargando una vista de tabla después de llamar a un service web aquí. El problema es cuando estoy parado en la misma vista. Si recibí un post de inserción, debo volver a cargar la vista de tabla tanto en primer plano como en segundo plano. Pero cuando estoy haciendo eso, no funciona correctamente. ¿Cómo logro esto?

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

Puede probar con la notificación local NSNotificationCenter para volver a cargar su tabla cuando se recibe una notificación de inserción.

Cuando se recibe una notificación push, despide tu notificación local. En su controller de vista, escuche la notificación local y realice la tarea.

Por ejemplo:

En tu didReceiveRemoteNotification:

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

En su ViewController, agregue Observer (en viewDidLoad ):

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

e implementa el siguiente método:

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

También elimine el observador en viewDidUnload o viewWillDisappear .

Versión Swift 3:

en didReceiveRemoteNotification

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

en su ViewController, agregue Observer (en viewDidLoad):

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

y en vista WillDissapear

  NotificationCenter.default.removeObserver("reloadTheTable")