当我收到推送通知时,如何重新加载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]; }
同时删除viewDidUnload
或viewWillDisappear
中的观察者。
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")