我有一个带导航控制器的屏幕,导航栏上有一个按钮,显示一个表(来自另一个视图控制器),用于选择使用弹出式演示文稿的内容,现在点击我要打开的任何项目另一个视图控制器不同的屏幕。
但如果我使用navigationController?.pushViewController(tab, animated: true)
新视图控制器显示在该小弹出视图本身
如果我使用
navigationController?.presentViewController(tab, animated: true)
导航栏不在该屏幕上,我就无法返回上一屏幕。如何做到这一点,我可以回到首先显示弹出列表的屏幕。
答案 0 :(得分:0)
如果您使用的是故事板,那么这很容易实现。如果你不是,那么应该。使用故事板非常好。
让我们给你的视图控制器调用这些名称:
SourceVC
PopoverVC
NewVC
添加将您的SourceVC
与NewVC
相关联的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
。