按返回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