【发布时间】:2016-10-12 02:27:25
【问题描述】:
我基本上是在尝试重新创建 whatsapp。我的 MainVC 有一个 TableView 可以显示所有当前的对话,并且有一个推送到 ChatVC 以显示整个对话。
当用户想要开始新的对话时,他们点击右上角的按钮,UserListVC 从底部出现并显示用户列表。
我的想法是,当用户单击用户时,“UsersListVC”会关闭(显示 mainVC)并调用一个函数来打开 ChatVC。但是,在 MainVC 关闭后,我无法成功调用函数。
请不要现在我没有推送任何数据我只是想让segues正常工作
MainVC.swift
func showChatVC() {
print("FUnction called")
let showChat = ChatVC()
navigationController?.pushViewController(showChat, animated: false)
}
UsersListVC.swift
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
dismiss(animated: true) {
MainVC().showChatVC()
}
}
我尝试了几种不同的变体,但似乎根本无法在 MainVC 中调用该函数。我是不是太固执地想以这种方式做segues?我应该直接从 UsersListVC 转到 ChatVC
【问题讨论】:
-
什么是
dismiss(animated: ) { }? -
在这一行 let showChat = ChatVC(),你正在创建一个新的聊天 VC 实例。相反,您需要访问您在情节提要中创建的“实例”。为此,请给 segue 一个标识符并调用 performSegueWithIdentifier 方法。
-
我尝试将 performSegue 调用放入我的函数 showChatVC 但当我在 NewMessageVC 中选择一行时,我什至无法调用该函数 showChatVC
-
或者我是否想到了如何实现这个错误,我应该在选择用户后从我的 NewMessageVC 转到聊天?
-
MainVC().showChatVC()创建MainVC的新实例。这个新实例不在视图层次结构中,也不在导航控制器中。因此调用navigationController?.pushViewController(showChat, animated: false)什么都不做,因为navigationController是nil。您需要检索对现有MainVC的引用,而不是创建新的。
标签: ios swift uinavigationcontroller