嵌入在标签栏控制器中的导航控制器:pushViewController不再起作用

时间:2016-11-16 04:36:44

标签: uitabbarcontroller uinavigationbar pushviewcontroller

在我决定使用UITabBarController之前,一切正常。 我尝试将MessagesController设为我新创建的TabBarController的标签(第4个)。但问题是现在pushViewController不再起作用了,所以我猜导航控制器有问题。

PS:我在没有故事板的情况下工作,所以我正在以编程方式完成所有工作。

这是我的代码:

AppDelegate:

window?.rootViewController = TabBarController()

现在,当用户点击“新消息”按钮时,它会调用此方法:

MessagesController:

      ` func handleNewMessage(){
        let newMessageController = NewMessageController()
        newMessageController.messagesController = self
        let navController = UINavigationController(rootViewController: newMessageController)
        present(navController, animated: true, completion: nil)
    }`

然后,用户可以看到用户列表,如果点击了一个用户,则会打开该用户的聊天记录:

   `func showChatLogControllerForUser(_ user: User){
        let chatLogController = ChatLogController(collectionViewLayout: UICollectionViewFlowLayout())
        chatLogController.user = user
        navigationController?.pushViewController(chatLogController, animated: true)
    }`

TabBarController:

`let item1 = TabOne()
let item2 = TabTwo()
let item3 = TabThree()
let item4 = MessagesController()
let tab1Nav = UINavigationController(rootViewController: item1)
let tab2Nav = UINavigationController(rootViewController: item2)
let tab3Nav = UINavigationController(rootViewController: item3)
let tab4Nav = UINavigationController(rootViewController: item4)
let controllers = [ tab1Nav, tab2Nav, tab3Nav, tab4Nav ]
self.viewControllers = controllers `

我可以找到一些似乎与我的问题类似的帖子,但没有一个解决方案有效。

我尝试了很多东西但仍无法找到问题所在。 由于推送ChatLogController没有任何效果,我怀疑那里的导航控制器存在问题。 因此,showChatLogControllerForUser在我检查navigationController确实存在的情况下,使用print(navigationController)确实最终返回nil

你们知道那里发生了什么吗?

感谢您的帮助!

学家

0 个答案:

没有答案