在 shouldPerformSegueWithIdentifier UIAlertController 之后未执行 Unwind Segue
Unwind Segue not being performed after shouldPerformSegueWithIdentifier UIAlertController
我有一个从名为 DetailViewController
的 UIViewController
到 MainViewController
的展开转场,定义为(在 MainViewController
内):
@IBAction func deleteItemUnwind(sender: UIStoryboardSegue)
{
let sourceViewController = sender.sourceViewController
}
在 DetailView 中,我有一个应该执行 segue 的按钮,该按钮连接到名称为 deleteItemUnwindSegue
的场景出口,在 DetailViewController 中,我有 prepareForSegue
更改一些变量的值。这很好用。问题是,我在 DetailViewController
中有以下代码
override func shouldPerformSegueWithIdentifier(identifier: String!, sender: AnyObject!) -> Bool {
if (identifier == "deleteItemUnwindSegue") {
let deleteItemAlert: UIAlertController = UIAlertController(title: "Delete item", message: "Are you sure you want to delete this item?", preferredStyle: .ActionSheet)
let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
return false
}
deleteItemAlert.addAction(cancelAction)
let deleteItemAction: UIAlertAction = UIAlertAction(title: "Yes", style: .Destructive) { action -> Void in
return true
}
deleteItemAlert.addAction(deleteChoreAction)
self.presentViewController(deleteItemAlert, animated: true) {
}
}
return true
}
虽然 prepareForSegue
代码有效,但不会触发 Unwind 转场 本身 以关闭视图。有什么想法吗?
我发现(在阅读 UIAlertController
之后)显示警报后的那一刻,执行后的代码,因此每次都会自动给出 false。我能够通过创建一个通用的 First Responder
来绕过这个 Exit
unwind segue,并让按钮项触发 segue。
我有一个从名为 DetailViewController
的 UIViewController
到 MainViewController
的展开转场,定义为(在 MainViewController
内):
@IBAction func deleteItemUnwind(sender: UIStoryboardSegue)
{
let sourceViewController = sender.sourceViewController
}
在 DetailView 中,我有一个应该执行 segue 的按钮,该按钮连接到名称为 deleteItemUnwindSegue
的场景出口,在 DetailViewController 中,我有 prepareForSegue
更改一些变量的值。这很好用。问题是,我在 DetailViewController
override func shouldPerformSegueWithIdentifier(identifier: String!, sender: AnyObject!) -> Bool {
if (identifier == "deleteItemUnwindSegue") {
let deleteItemAlert: UIAlertController = UIAlertController(title: "Delete item", message: "Are you sure you want to delete this item?", preferredStyle: .ActionSheet)
let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in
return false
}
deleteItemAlert.addAction(cancelAction)
let deleteItemAction: UIAlertAction = UIAlertAction(title: "Yes", style: .Destructive) { action -> Void in
return true
}
deleteItemAlert.addAction(deleteChoreAction)
self.presentViewController(deleteItemAlert, animated: true) {
}
}
return true
}
虽然 prepareForSegue
代码有效,但不会触发 Unwind 转场 本身 以关闭视图。有什么想法吗?
我发现(在阅读 UIAlertController
之后)显示警报后的那一刻,执行后的代码,因此每次都会自动给出 false。我能够通过创建一个通用的 First Responder
来绕过这个 Exit
unwind segue,并让按钮项触发 segue。