2016-08-21 72 views
0

我有一個UIViewController。在這個UIViewcontroller是一個容器。在這個容器中是一個選項卡欄控制器。其中一個選項卡是嵌入導航控制器中的PageViewController。其中一個頁面是UITableViewController。在容器中顯示UIViewController

UIViewController->Container->TabBarController->NavigationController->PageViewController->UITableViewController 

如果您單擊其中一個單元我想要顯示一個UIViewContoller。但是這個UIViewcontroller應該只在容器和NavigationController中。如果我點擊一個單元,您可以看到0.3秒的正確結果。在導航欄上有一個「後退」按鈕。但是,然後UIViewController切換到完整大小。

我顯示的UIViewController如下:

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
     let vc = storyboard.instantiateViewControllerWithIdentifier("article") 
     self.presentViewController(vc, animated: true, completion: nil) 

我得到以下華林:

Presenting view controllers on detached view controllers is discouraged <Test.AllArticlesTableViewController: 0x7f812bd227d0>. 

我希望有人能幫助我。

+0

在上述背景下的自我是什麼?最後一個'UITableViewController'?也許嘗試'self.navigationController.presentViewController'。我認爲'UIPageViewController'在技術上動態地添加了視圖控制器,所以當你從中提出時,你會得到這個警告,因爲它是'UIPageViewController'中的'detached'UIViewController' – DMCApps

+0

你是對的。我沒有得到錯誤消息(self.navigationController!.presentViewController(vc,animated:true,completion:nil))。但是ViewController仍然處於全屏模式!我如何讓這個ViewController成爲NavigationController的一部分 – ReasyEasyPeasy

回答

1

默認情況下,呈現視圖控制器將佔用全屏幕。我相信你正在尋找的是將視圖控制器推到導航堆棧上。使用pushViewController(_:animated:)

實施例:

self.navigationController.pushViewController(vc, animated: true) 

的視圖控制器使得其以被嵌入在導航界面」。

有關更多信息,請參閱Apple docs

+0

嘿,那很好。我嘗試了「self.navigationController?.pushViewController(vc,animated:true)」,現在UIViewControler顯示正確。但是現在發生了一些奇怪的事情:它加載了兩次UIViewController。我必須在「返回」上點擊2次才能返回到我的UIViewTableController。動畫在呈現viewController時也是2倍。所以它的UITableViewController - > myUiViewController - > myUiViewController。 – ReasyEasyPeasy

+0

你可以發佈你的代碼的方法,所以我可以看看嗎?另外請檢查你沒有提出/推視圖控制器從其他任何地方,例如..故事板等 –

+0

嘿我發現了錯誤,我連接單元格與故事板中的UIViewController。非常感謝你! – ReasyEasyPeasy

相關問題