如何从popoverpresentation视图控制器导航到另一个视图控制器

时间:2016-06-26 09:04:44

标签: ios xcode swift uinavigationcontroller uipopovercontroller

我有一个带导航控制器的屏幕,导航栏上有一个按钮,显示一个表(来自另一个视图控制器),用于选择使用弹出式演示文稿的内容,现在点击我要打开的任何项目另一个视图控制器不同的屏幕。

但如果我使用navigationController?.pushViewController(tab, animated: true)   新视图控制器显示在该小弹出视图本身

如果我使用 navigationController?.presentViewController(tab, animated: true) 导航栏不在该屏幕上,我就无法返回上一屏幕。如何做到这一点,我可以回到首先显示弹出列表的屏幕。

1 个答案:

答案 0 :(得分:0)

如果您使用的是故事板,那么这很容易实现。如果你不是,那么应该。使用故事板非常好。

让我们给你的视图控制器调用这些名称:

  • 可以显示弹出窗口的视图控制器称为SourceVC
  • 弹出控制器名为PopoverVC
  • 用于显示用户从表视图中选择内容的视图控制器称为NewVC

添加将您的SourceVCNewVC相关联的show segue。给segue一个标识符。

添加从PopoverVC展开到SourceVC的展开segue。首先,在SourceVC

中添加这些方法
func unwind(segue: UIStoryboardSegue) {
    if let vc = segue.sourceViewController as? PopoverVC {
        // get the thing that the user selected and store it somewhere
        // perform a segue that shows NewVC
    }
}

override func prepareForSegue(segue: UIStoryboardSegue) {
    if let vc = segue.destinationViewController as? NewVC {
        // pass the thing that the user selected to the NewVC
    }
}

然后,选择PopoverVC并将其拖动到SourceVC中的“退出”状态。然后选择“放松:”。给这个展开segue也是一个标识符。

当用户在表视图中选择一行时,只需执行展开segue并将用户选择的内容存储在类级变量中,以便将其传递给SourceVC