在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/
- generics函数和属性,以Equatable和Printable作为Swift中的参数
- 图书馆没有加载 – 阿拉莫菲尔
- 将UICollectionView单元格数据传递给不同的ViewController时EXC_BAD_INSTRUCTION
- 协议操作符为什么必须作为全局函数来实现?
- Datepickerselect错误的date
- 无法将types'CFString'的值转换为期望的参数types'UnsafePointer <Void>'(又名'UnsafePointer <()>')
- 如何从自己的项目导入自己的类到游乐场
- 如何使用Swift实时过滤video
- 在Objective-C框架中使用Swift闭包