在Swift中,从导航后退button中取消切入

我有一个设置屏幕,我有一个表格单元格。 通过点击该button,我可以进入另一个用户可以select一个选项的屏幕,并且当按下返回button时,我需要将其返回到先前的视图控制器中。

在这里输入图像说明在这里输入图像说明

我可以放置一个自定义栏button项目,但是我想使用导航栏中的后退button而不是视图上的自定义button返回到父视图控制器。

我似乎无法重写导航后退button将其指向我的unwind segue动作,因为后退button不出现在故事​​板上,我不能将绿色的退出button拖到它

是否可以用后退button展开推入?

我实现了我正在尝试做的事情,即使用委托方法将数据备份到导航控制器堆栈中:

http://makeapppie.com/2014/07/05/using-delegates-and-segues-part-2-the-pizza-demo-app/

这是我的解决scheme,基于从Blankarsch的Objective-C代码到这个StackOverflow问题: 如何捕获后退button事件

把这段代码放在你想要从后面的button调用陷阱的视图控制器:

override func didMoveToParentViewController(parent: UIViewController?) { if (!(parent?.isEqual(self.parentViewController) ?? false)) { println("Back Button Pressed!") } } 

在if块的内部,处理你需要传回的任何东西。 您还需要返callback用视图控制器的引用,因为在这一点上,父类和self.parentViewController都是零,所以您无法浏览View Controller树。

另外,你也许可以简单地检查父对象为零,因为我还没有find按下后退button不会导致父对象为零的情况。 所以像这样更简洁:

 override func didMoveToParentViewController(parent: UIViewController?) { if (parent == nil) { println("Back Button Pressed!") } } 

但我不能保证每一次都能正常工作。

安德鲁

具有后退button的视图控制器中执行以下操作

Swift 3

 override func didMove(toParentViewController parent: UIViewController?) { if (!(parent?.isEqual(self.parent) ?? false)) { print("Parent view loaded") } } 

我试了一样,似乎你不能赶上标准的后退button的动作,所以解决scheme将是使用自定义button,并将其绑定到一个导致回到前一页的segue。

你可以像你一样使用某种委派,或者使用自定义的后退button和放松继续。

甚至更好,你可以使用中介处理视图控制器之间的传递数据:

http://cocoapatterns.com/passing-data-between-view-controllers/