在这个问题上,我有4个视图控制器。为了简单起见,我将它们称为vcA、vcB、vcC和vcD。
总的来说,我想做的是关闭两个视图控制器,然后将第三个视图控制器推到第四个视图控制器。本质上,这就是路径的走向:vcA(解除)->vcB(解除)->vcC推送到vcD(最终目的地)。
这是我目前的程序代码。请注意,我可以关闭前两个视图控制器,但我不知道如何推动第三个视图控制器。总之,这是我的代码:
vcA代码:
@IBAction func createGroupButtonTapped(_ sender: Any) {
if groupNameTextField.text == "" {
ProgressHUD.showError("Please enter a group title")
} else {
self.presentingViewController?.dismiss(animated: false, completion: nil)
NewConversationController().showDisplayConversationsController(title: self.groupNameTextField.text!, groupThumbnail: self.groupImageView, members: CreateConversationPopOver.groupMembers)
self.presentingViewController?.dismiss(animated: true, completion: nil)
}
}
在上面的代码中,我关闭前两个视图控制器,并调用vcB中的函数。vcB中的此函数调用vcC中的函数。下面是函数的代码:
vcB中的功能:
func showDisplayConversationsController(title: String, groupThumbnail: UIImageView, members: Array<String>) {
dismiss(animated: true, completion: nil)
DisplayConversationsController().showViewChatController(title: title, groupThumbnail: groupThumbnail, members: members)
}
vcC中的功能:
func showViewChatController(title: String, groupThumbnail: UIImageView, members: Array<String>) {
let viewChatController = ViewChatController(collectionViewLayout: UICollectionViewFlowLayout())
viewChatController.hidesBottomBarWhenPushed = true
viewChatController.groupThumbnail = groupThumbnail
viewChatController.groupMembers = members
viewChatController.groupTitle = title
navigationController?.pushViewController(viewChatController, animated: true)
}
这个问题发生在VCC中,视图控制器从不推送到最终目的地,也就是vcD。我在上面的函数中添加了断点,它们都被调用了。所以代码正在运行。
我不知道视图控制器为什么不推,因为即使经过多次测试,我的所有函数都被调用了。
任何帮助都将不胜感激。谢谢!
注:如果你想知道我为什么要关闭视图并以这种方式呈现它们,那是因为我需要将数据通过这些视图传递到聊天日志控制器中。
最佳答案
第一。
检查vcC的导航控制器,它可能为零。
似乎您调用类方法NewConversationController
DisplayConversationsController
,(不熟悉swift,或者这两个方法)不是实例方法。
也许它不是正确的vcC,只是一个新的vcC?
注:很奇怪,你的vcA。PresentingView控制器关闭两次,根据你说的,它只是关闭罚款。
如果你能描述一下你如何展示vcA,vcB或者演示一下它是如何工作的,我认为这可能会有帮助。
关于ios - 关闭两个View Controller,然后推送一个View Controller-Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44856462/