2015-05-31 4 views
1

У меня есть разматывания SEGUE от UIViewController имени DetailViewController к MainViewController определяется как (в пределах MainViewController):разматывает Segue не выполняется после того, как shouldPerformSegueWithIdentifier UIAlertController

@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 код работает, раскрутка сами непосредственно перейти не срабатывает, чтобы отклонить вид. Есть идеи?

ответ

0

Я понял, что (после чтения на UIAlertController) в тот момент, когда отображается предупреждение, код после его выполнения, поэтому он wold автоматически дает ложь каждый раз. Мне удалось обойти это, создав общий First Responder до Exit разматывать segue, а кнопка button активирует segue.