卡住!只能为presentviewcontroller传递数据,不能pushviewcontroller
Posted
技术标签:
【中文标题】卡住!只能为presentviewcontroller传递数据,不能pushviewcontroller【英文标题】:Stuck! can only pass data for presentviewcontroller, not pushviewcontroller 【发布时间】:2016-08-07 16:21:42 【问题描述】: let chatController = ChatLogController()
chatController.user = user
let nav: UINavigationController = UINavigationController(rootViewController: chatController)
self.presentViewController(nav, animated: true, completion: nil)
上面的代码有效,我试图在呈现之前将用户传递给下一个视图控制器 但是这不起作用,它在下一个视图控制器中为用户提供 nil:
let chatController = ChatLogController()
chatController.user = user
let nav: UINavigationController = UINavigationController(rootViewController: MessagesController())
// self.presentViewController(nav, animated: true, completion: nil)
nav.pushViewController(chatController, animated: true)
我真的不知道为什么,抱歉这些愚蠢的问题,我对此很陌生。
【问题讨论】:
在第二个示例中,您正在实例化一个新的导航控制器,但该控制器并未添加到视图控制器层次结构中。你必须展示它,然后你才能在上面推任何东西。我也不太明白为什么这个MessagesController
是这个导航控制器的根视图控制器。这是什么MessagesController
?你真的想用MessagesController
和ChatLogController
来展示导航控制器,还是只用ChatLogController
?
你想改用self.navigationController?.pushViewController(...)
吗?
【参考方案1】:
如果我没记错的话,你的问题是MessagesController()
。
试试这个:
let chatController = ChatLogController()
chatController.user = user
let nav: UINavigationController = UINavigationController(rootViewController: chatController)
// self.presentViewController(nav, animated: true, completion: nil)
nav.pushViewController(nav, animated: true)
【讨论】:
以上是关于卡住!只能为presentviewcontroller传递数据,不能pushviewcontroller的主要内容,如果未能解决你的问题,请参考以下文章
IIViewDeckController 和 presentViewController
将另一个类的视图添加为 presentViewController 会导致 UIEvents 不起作用
presentViewController 显示在 UIWindow 后面