2016-08-21 36 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

相关问题