【发布时间】:2017-05-22 07:12:32
【问题描述】:
我在我的应用程序中使用推送通知并在点击通知时执行 segue 但问题是如果应用程序在某个视图上并且通知来自同一个视图,那么 segue 在同一个视图上执行并且相同的视图出现在那个视图上看法。如果视图相同,我不希望这种情况发生,那么它不应该执行 segue。这是我的代码
if application.applicationState == UIApplicationState.background{
let moduleName = userInfo.value(forKey: "click_action") as! String
let timestamp = Int64(date.timeIntervalSince1970)
let description = userInfo.value(forKey: "body") as! String
let title = userInfo.value(forKey: "title") as! String
let entity = NSEntityDescription.entity(forEntityName: "Notifications", in: DataBaseController.persistentContainer.viewContext)
let managedObj=NSManagedObject(entity: entity!, insertInto: DataBaseController.persistentContainer.viewContext)
managedObj.setValue(moduleName, forKey: "click")
managedObj.setValue(description, forKey: "body")
managedObj.setValue(timestamp, forKey: "timestamp")
managedObj.setValue(title, forKey: "title")
DataBaseController.saveContext()
if (homeVC != nil){
homeVC?.performSegue(withIdentifier: moduleName, sender: homeVC)
}
}
}
homeView 控制器中的方法
//MARK:- Navigation Methods
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
let backItem = UIBarButtonItem()
backItem.title = "Home"
navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed
if(segue.identifier == "notificationconnew"){
let notObj = segue.destination as! NotificationsTableViewController
notObj.homeVC = self
}
}
override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
if identifier == segueString && self.navigationController?.viewControllers.last is MyEarningViewController{
return false
}
else{
return true
}
}
在 App Delegate 中声明 homeVc 对象
class AppDelegate: UIResponder, UIApplicationDelegate{
var window: UIWindow?
var notification : NSDictionary?
var homeVC : HomeViewController?
lazy var dBhandler = DBHandler()
let date = NSDate()
并在 HomeViewController 的 viewDidLoad 中给出实例
// Giving instance of HomeViewController to AppDelegate
let appDele = UIApplication.shared.delegate as! AppDelegate
appDele.homeVC = self
【问题讨论】: