按返回button执行继续
当我点击“返回”button时,我想执行继续。 为此我做:
override func didMoveToParentViewController(parent: UIViewController?) { self.performSegueWithIdentifier("fromGalleryToBody", sender: self) }
但是当我点击返回button时它会崩溃我的应用程序。 我怎么能意识到这一点?
导航的默认button使您可以移动到前一个视图
您可以通过以下方式查看:
override func didMoveToParentViewController(parent: UIViewController?) { if parent == nil { println("Back Pressed") } }
但情况是,移动到didMoveToParentViewController
意味着它已经移动到前一个视图。
您可以在导航栏中添加自定义button作为后退button。 那么你的问题将得到解决。
以编程方式添加button:
let backButton = UIBarButtonItem(title: "Назад в будущее", style: .Plain, target: self, action: "toMainFromGallery") self.navigationItem.leftBarButtonItem = backButton
function:
func toMainFromGallery { }
有后面象的button:
var backButton = UIButton(frame: CGRectMake(0, 0, 70.0, 70.0)) var backImage = UIImage(named: "backBtn") backButton.setImage(backImage, forState: UIControlState.Normal) backButton.titleEdgeInsets = UIEdgeInsetsMake(10.0, 10.0, 10.0, 0.0) backButton.setTitle("Back", forState: UIControlState.Normal) backButton.addTarget(self, action: "buttonPressed", forControlEvents: UIControlEvents.TouchUpInside) var backBarButton = UIBarButtonItem(customView: backButton) self.navigationItem.leftBarButtonItem = backBarButton
左边应该有空格如果你想删除它添加spacer如下:
var spacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil) spacer.width = -15 self.navigationItem.leftBarButtonItems = [spacer,backBarButton]
后面的图标图像应该分别为22px,44px和66px = @ 1x,@ 2x和3x
请检查。 这里是你需要的例子。
Swift或Swift中的代表和分段
你需要在你的视图控制器中像这样设置。
把这段代码放在你想要从后面的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!") } }
更多的细节请参考这个答案Segue on Backbutton