Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 后退按钮不可用';t出现在导航栏中_Ios_Swift_Segue_Back Button - Fatal编程技术网

Ios 后退按钮不可用';t出现在导航栏中

Ios 后退按钮不可用';t出现在导航栏中,ios,swift,segue,back-button,Ios,Swift,Segue,Back Button,我很难理解视图控制器的显示方式以及如何在swift中在它们之间导航。我有一个联系人列表,当你点击一个联系人时,它会打开相关的对话,但不会显示任何返回到对话列表的按钮。我的故事板是: 联系人列表->导航控制器->消息控制器 联系人列表之前没有导航控制器,因为它会弄乱滑动菜单 这是我的密码: override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if segue.identifier ==

我很难理解视图控制器的显示方式以及如何在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

    }

}

更一般地说,如果您能解释或拥有任何关于控制器堆栈工作方式以及如何在它们之间导航的好资源,那就太好了,我读了很多文章,但仍然不清楚。

重新安排,使其成为
导航控制器->联系人列表->消息控制器-/code>,然后使用
推送
序列(如果您使用的是swift 1.2+,则称为
Show
segues)

prepareforsgue内部:
除了设置联系人id(或需要传递给消息控制器的任何数据)之外,您无需执行任何其他操作

编辑:

对于滑动菜单,我建议使用以下导航模式:

  • 情节提要
    ViewController
    s层次结构将消失

    Nav控制器--根segue-->联系人列表VC--显示segue-->消息VC

  • 滑动菜单通常显示顶级视图。
    联系人列表VC
    是一个顶级视图。由于它也是根VC,您可以使用
    self.navigationItem.leftBarButtoniem
    指定一个按钮来显示滑动菜单


  • 您是使用故事板还是所有内容都是动态生成的?您可以尝试以下操作:
    navigationController.setNavigationBarHidden(false,动画:true)
    查看我的答案,我99%确定这是解决方案,正如我说的,问题是我无法将导航控制器放在联系人列表之前,或者它破坏了我的滑动菜单的显示方式。还有其他方式吗?问题是您没有将消息控制器推到堆栈中,因此无法“返回”。因为没有“返回”转到。您的消息控制器是根viewcontroller。因此,我强烈建议您重新设计滑动菜单。另一种解决方案是您以编程方式显示视图控制器并将其关闭,但这将100%保证会带来不必要的麻烦。在这种情况下,我如何以编程方式显示它们?我选择了t他的解决方案是因为我不知道如何在导航控制器中执行我的滑动菜单,这里仍然是一个初学者^^查看我的编辑,了解如何在导航控制器上执行此操作