我想在单击“返回”按钮时执行segue。我这样做:
SELECT * FROM `my_table` WHERE `id` IN (...);
但是当我点按“返回”按钮时,它会崩溃我的应用程序。我怎么能意识到它?
答案 0 :(得分:4)
默认导航按钮为您提供移动到上一个视图的功能
您可以通过以下方式查看:
override func didMoveToParentViewController(parent: UIViewController?) {
if parent == nil {
println("Back Pressed")
}
}
但情况为didMoveToParentViewController
表示已经转移到上一个视图。
您可以在导航栏中添加自定义按钮作为后退按钮。然后你的问题就会解决。
以编程方式添加按钮:
let backButton = UIBarButtonItem(title: "Назад в будущее", style: .Plain, target: self, action: "toMainFromGallery")
self.navigationItem.leftBarButtonItem = backButton
功能:
func toMainFromGallery {
}
带有后退图标的按钮:
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
左边应该有空格如果要删除它,请添加以下内容:
var spacer = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FixedSpace, target: nil, action: nil)
spacer.width = -15
self.navigationItem.leftBarButtonItems = [spacer,backBarButton]
返回图标图像应为22px,44px和66px = @ 1x,@ 2x和3x respectivaly
答案 1 :(得分:1)
请检查。这是你需要的例子。
Delegates and Segues in Swift 或
你需要在视图中设置这样的设置,就像安德鲁说的那样。
将此代码放入要从以下位置捕获后退按钮调用的视图控制器中:
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!")
}
}
有关详细信息,请参阅此答案 Segue on Backbutton