我想在Swift应用程序中创建以下用户流:
为此,我创建了以下结构:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Perform Segue
print("Trying to segue")
rootController!.navigationController!.popToRootViewControllerAnimated(true)
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
我试图通过将VC1的引用一直传递到VC3,然后在VC3中调用以下代码,一直弹回VC1:
rootController
其中{{1}}是对VC1的引用。不幸的是,segue没有发生;第二个模态视图保留在屏幕上,但我打印出“试图消失”消息。
我是否正在尝试以正确的方式实施此用户流程?如果是这样,为什么我不能弹出到另一个导航控制器的根视图的任何建议?
答案 0 :(得分:3)
如果您使用的是故事板,则可以使用展开segue来执行此操作。
在VC1中实现@IBAction
方法,该方法将UIStoryboardSegue
作为参数:
@IBAction func unwindToVC1(sender: UIStoryboardSegue) {
}
然后从VC3控件的Prototype单元格拖动到视图控制器的Exit图标,选择Selection Segue: unwindToVC1:
,你就可以了。
您也可以使用代码获得类似的结果
在VC3中实现didSelectRowAtIndexPath
,如下所示:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
navigationController!.dismissViewControllerAnimated(true, completion: nil)
}