我一直在按照 firebase 教程创建自己的聊天应用程序,我正在尝试从包含 TableView 的 uiviewcontroller 访问 chatviewcontroller。 Viewcontroller 嵌入在导航 Controller 中。选择单元格时如何调出聊天 View Controller ?
这是我的代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
//retrieve the destination view controller
let navVc = segue.destination as! UINavigationController
let channelVc = navVc.viewControllers.chatViewController as! ViewController
// set the senderDisplayName in Viewcontroller to the email provided in the email field by the user
channelVc.senderDisplayName = userEmailTextField?.text
}
最佳答案
假设您的 ChatViewController
是导航 Controller 的 Root View Controller ,您应该将代码更改为:
let channelVc = navVc.viewControllers.first as! ChatViewController
navVC.viewControllers
是由 UINavigationController
管理的 UIViewController
的数组,因此该数组不会有名为 chatViewController
除非你实现了一些自定义的东西。
编辑:为了将它们放在一起,并演示如何安全地解包这些可选值,您的 prepareForSegue
应该如下所示:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
if let navVc = segue.destination as? UINavigationController, let channelVc = navVc.viewControllers.first as? ChatViewController {
//Now you have a reference to your ChatVC, and you can set the DisplayName
channelVc.senderDisplayName = userEmailTextField?.text
}
}
关于ios - 如何转换 uinavigationviewcontroller 的第一个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43664639/