我有一个设置屏幕,因为我有一个表格单元格。通过单击我进入另一个屏幕,用户可以选择一个选项,当按下后退按钮时我想要它回到上一个视图控制器。
我可以放置一个自定义栏按钮项,但我想使用导航栏中的后退按钮返回到父视图控制器,而不是使用视图上的自定义按钮。
我似乎无法覆盖导航后退按钮以将其指向我的展开segue操作,并且因为后退按钮没有出现在故事板上,所以我无法将绿色的“退出”按钮拖到它上面
是否可以使用后退按钮展开push segue?
答案 0 :(得分:4)
这是我的解决方案,基于Blankarsch的Objective-C代码到此StackOverflow问题:How to trap the back button event
将此代码放入要从以下位置捕获后退按钮调用的视图控制器中:
override func didMoveToParentViewController(parent: UIViewController?) {
if (!(parent?.isEqual(self.parentViewController) ?? false)) {
println("Back Button Pressed!")
}
}
在if块的内部,处理你需要传回的任何内容。您还需要有一个返回调用视图控制器的引用,因为此时很可能parent和self.parentViewController都是nil,因此您无法导航View Controller树。
此外,您可以简单地检查父项为nil,因为我没有找到按下后退按钮不会导致父项为零的情况。所以这样的事情更简洁:
override func didMoveToParentViewController(parent: UIViewController?) {
if (parent == nil) {
println("Back Button Pressed!")
}
}
但我无法保证每次都会有效。
安德鲁
答案 1 :(得分:2)
在视图控制器中执行以下操作 后退按钮
Swift 3
override func didMove(toParentViewController parent: UIViewController?) {
if !(parent?.isEqual(self.parent) ?? false) {
print("Parent view loaded")
}
super.didMove(toParentViewController: parent)
}
答案 2 :(得分:0)
我尝试了同样的事情,似乎你无法捕捉到标准后退按钮的动作,因此解决方案将是使用自定义按钮并将其绑定到segue,然后返回上一页。
答案 3 :(得分:0)
您可以像使用某种方式使用或使用自定义后退按钮和展开segue。
更好的是,您可以使用中介处理视图控制器之间的数据:
http://cocoapatterns.com/passing-data-between-view-controllers/