[英]Show viewcontroller on receive of push notification is not working, whose view is not in the window hierarchy
[英]how to manage view hierarchy when opening a viewcontroller from push notification
當我使用didReceive方法單擊來自viewcontroller的推送通知時,已經設法從應用程序委托打開了一個視圖控制器。 我的問題是管理層次結構。 考慮我擁有視圖A,視圖B和視圖C,這樣我將在以下步驟中看到視圖C:視圖A->視圖B->視圖C。但是當我單擊推送通知時,它將帶我進入視圖C,所以當我單擊在視圖C的后退按鈕上,它應具有相同的堆棧順序的視圖B和視圖A。 有可能這樣做嗎?
編輯:這是我的代碼,如果有幫助
我想要BaseVc> secondBaseVc> LogbookVc> DetailVc
if let info = userInfo as? [String:Any]{
let id = info["id"] as? String ?? ""
let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let BaseVc = storyBoard.instantiateViewController(withIdentifier: "BaseViewController") as! BaseViewController
let secondStoryboard : UIStoryboard = UIStoryboard(name: "Second Storyboard", bundle: nil)
let secondBaseVc : BaseController = secondStoryboard.instantiateViewController(withIdentifier: "secondBaseVc") as! secondBaseVc
let LogbookVc : LogbookVc = secondStoryboard.instantiateViewController(withIdentifier: "LogbookVc") as! LogbookVc
let DetailVc: DetailVc = secondStoryboard.instantiateViewController(withIdentifier: "DetailVc") as! DetailVc
}
我應該如何連接它們以顯示DetailVc,但如何按順序排列它們,以便當我單擊“后退”按鈕時,我應該將Logbook <secondBaseVc <Base Vc
並非如此,如果您沒有在堆棧中放置那些viewControllers A和B,則無法將某些內容彈出到先前的viewController中。
我認為您可以做的是:您必須自行處理,例如收到通知時。 您必須先按動畫:false來先按A,然后按B,然后按C,這樣就不會產生過渡效果。
.navigationController?.pushViewController(objA,動畫:false).navigationController?.pushViewController(objB,動畫:false).navigationController?.pushViewController(objC,動畫:false)
編輯
let navigationController = UINavigationController(rootViewController: baseVc)
navigationController.pushViewController(logbookVc, animated: false)
navigationController.pushViewController(detailVc, animated: false)
self.window?.rootViewController = navigationController
self.window?.makeKeyAndVisible()
重要的提示:
使用camelCase創建對象名稱以獲得適當的可讀性。 例如, 讓BaseVc應該設為baseVc,並且與logVV和detailVc相同
嘗試並分享結果。
希望能幫助到你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.