我想在我的Swift应用程序中创建以下用户流:
为此,我创建了以下结构:
--> NC1 --> VC1 --modal-> NC2 --> VC2 --show-> VC3 (NC = UINavigationController,
^ | VC = UIViewController)
| |
----Segue I'm trying to achieve-----
我一直试图通过将对VC1的引用一直传递到VC3,然后再在VC3中调用以下代码,将其一直弹出回到VC1:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// Perform Segue
print("Trying to segue")
rootController!.navigationController!.popToRootViewControllerAnimated(true)
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
哪里rootController
是对VC1的引用。不幸的是,这种情况没有发生。第二个模式视图仍保留在屏幕上,但是我得到了“尝试缝制”消息。
我是否尝试以正确的方式实施此用户流程?如果是这样,为什么我不能在另一个导航控制器中弹出根视图?
如果您正在使用情节提要,则可以使用展开顺序来执行此操作。
在VC1中实现一个@IBAction
方法,该方法采用aUIStoryboardSegue
作为参数:
@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)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句