在我决定使用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
。
你们知道那里发生了什么吗?
感谢您的帮助!
学家