簡體   English   中英

來自storyboard的實例化NavigationController引用相同的RootViewController

[英]Instantiated NavigationController from storyboard reference the same RootViewController

我正在從故事板中實例化導航控制器,我已經為其定義了根視圖控制器。

如果我實例化多個navigationcontroller如下:

        let nav = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CategorizedArticleNavigationController") as! UINavigationController
        let rootVC = nav.viewControllers.first as! CategorizedArticlesViewController
        let nav_1 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "CategorizedArticleNavigationController") as! UINavigationController
        let rootVC_1 = nav.viewControllers.first as! CategorizedArticlesViewController            
        self.present(rootVC, animated: true, completion: nil)

嘗試以模態方式呈現后出現異常:

由於未捕獲的異常'NSInvalidArgumentException'而終止應用程序,原因:'應用程序嘗試以模態方式呈現活動控制器...'

調試后,令我驚訝的是,我發現nav!= nav_1

rootVC == rootVC_1

並且我得到一個例外,試圖以模態方式呈現導航,因為它發現它的根vc已經被呈現。

有誰見過這個? 我應該提交錯誤嗎? 或者這是否有目的?

更新:這絕對是我的錯誤,@ Samntha澄清了這一點

在此輸入圖像描述

謝謝。

我認為它們相同的原因是這一行:

let rootVC_1 = nav.viewControllers.first as! CategorizedArticlesViewController            

在這里,您將rootVC_1分配給原始導航控制器的根視圖控制器(因此,與rootVC相同的對象)。 它應該是

let rootVC_1 = nav_1.viewControllers.first as! CategorizedArticlesViewController            

暫無
暫無

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

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