我正在创建一个应用程序,每30秒触发一次本地通知,当我点击通知时,它会打开一个表视图控制器。 此表视图控制器上有一个徽章,用于显示通知计数(如绿色图标中whatsapp中联系人显示的消息编号)。如果在应用程序处于活动状态时(即屏幕上有表视图控制器)收到通知,则应在单元格的徽章上更新通知计数。我是通过在我的应用委托的 didReceiveLocalNotification 方法中编写以下代码来完成此操作的:
var root = self.window!.rootViewController as ViewController
let main: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var setview = main.instantiateViewControllerWithIdentifier("tableview") as TableViewController
if application.applicationState==UIApplicationState.Active
{
TableViewController().tableView.reloadData()
root.dismissViewControllerAnimated(true, completion: nil) //I don't want to use this. Only badges should be updated
root.presentViewController(setview, animated:true , completion: nil)
}
答案 0 :(得分:0)
当我点击通知时,它会打开一个表视图控制器。
那么为什么不在你点击通知时重新加载你的表呢?
您应该在ViewDidAppear上填充您的单元格数组,然后在UITableView中显示更新的单元格(带有您的徽章)。
或(其他想法) - 当您的UITableView仍处于打开状态时,为什么不使用NSNotification来更新TableView?
类似的东西:
在TableView类中:
NSNotificationCenter.defaultCenter().addObserver(self, selector: "reloadTable:", name:"ReloadHandler", object: nil)
func reloadTable(notification: NSNotification){
.... populate your cell data array
... reload your table
}
//在主视图控制器中(您收到UIApplicationState)
NSNotificationCenter.defaultCenter().postNotificationName("ReloadHandler", object: false)