当用户按下alertView中的Go home时,我试图回到viewcontroller,它显示错误(libc ++ abi.dylib:以NSException类型的未捕获异常终止)
@IBAction func roundButton(sender: AnyObject) {
//add alert
alertController = UIAlertController(title: "Return Home", message: "Are you sure???", preferredStyle: .Alert)
let alertAction1 = UIAlertAction(title: "Cancel", style: .Default) { (action) in
}
let alertAction2 = UIAlertAction(title: "Go Home", style: .Destructive) { (action) in
let nv = self.storyboard!.instantiateViewControllerWithIdentifier("storyboardidentifier") as! ViewController
self.presentViewController(nv, animated:true, completion:nil)
}
alertController?.addAction(alertAction2)
alertController?.addAction(alertAction1)
self.presentViewController(alertController!, animated: true, completion: nil)
//end alert
}
答案 0 :(得分:0)
由于您没有提供太多信息,因此有很多可能性。我将尝试覆盖其中的大多数。
假设您在BViewController
中展示提醒。你想回到AViewController
。
如果AViewController
中嵌入了BViewController
和UINavgationController
,则必须在BViewController
和AViewController
之间连接展开segue。
首先,在AViewController
中添加此方法:
@IBAction func unwind(segue: UIStoryBoardSegue) {
}
在故事板中,控制 - 从BViewController
拖动到“AviewController”的“退出”并选择“展开:”也就是您刚刚声明的方法。这是你应该看到的
现在给你刚刚添加标识符的segue,说“unwindToHome”。
在UIAlertAction
回调闭包中,启动segue:
self.performSegueWithIdentifier("unwindToHome", sender: self)
就是这样!
如果您以模态方式呈现BViewController
,那么事情会更简单,只需致电dismissViewControllerAnimated
:
self.dismissViewControllerAnimated(true, completion: nil)
答案 1 :(得分:-1)
在两个视图控制器之间的故事板上创建一个segue并为其指定一个标识符,然后,在警报操作的完成处理程序中,您可以触发segue。有点像:
let alertAction2 = UIAlertAction(title: "Go Home", style: .Destructive) { (action) in
self.performSegueWithIdentifier("MyStoryboardSegue", sender: self)
}
祝你好运!