卡住!只能为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?你真的想用MessagesControllerChatLogController 来展示导航控制器,还是只用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的主要内容,如果未能解决你的问题,请参考以下文章

PresentViewController切换界面

IIViewDeckController 和 presentViewController

将另一个类的视图添加为 presentViewController 会导致 UIEvents 不起作用

presentViewController 显示在 UIWindow 后面

UIImageView 在顶部使用 presentViewController 时被调整大小

如何使用委托给 self 调用 presentViewController?