簡體   English   中英

通過推式通知打開ViewController時如何管理視圖層次結構

[英]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,並且與logVVdetailVc相同

嘗試並分享結果。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM