我无法理解视图控制器的呈现方式以及如何在swift中导航它们。我有一个联系人列表,当您点击一个联系人时,它会打开相关的会话,但它不会显示任何会话列表的后退按钮。我的故事板是: 联系清单 - >导航控制器 - >消息控制器
联系人列表之前没有导航控制器,因为它与滑动菜单混淆。
这是我的代码:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "ShowConversationFromSelectedContact" {
let nav = segue.destinationViewController as! UINavigationController
let cdtvc = nav.topViewController as! MessageViewController
cdtvc.currentConversation = openConversation
}
}
更一般地说,如果你可以解释或有任何关于控制器堆栈工作方式以及如何在它们之间导航的良好资源,这将是很好的,我读了很多文章,但它仍然不清楚。
答案 0 :(得分:2)
重新排列它是Nav Controller -> Contact list -> Message controller
,并使用push
segues(如果你使用swift 1.2+,它们被称为Show
segues。)
在prepareForSegue:
内,除了将联系人ID(或您需要传递的任何数据)设置到消息控制器之外,您不需要做任何其他事情。
修改强>
对于滑动菜单,我建议使用以下导航模型:
故事板ViewController
的层次结构
Nav Controller --root segue--> Contact List VC --show segue--> Message VC
滑动菜单通常会显示顶级视图。您的Contact List VC
是顶级视图。由于它也是根VC,您可以使用self.navigationItem.leftBarButtonItem
指定一个按钮来显示您的滑动菜单。