2016-06-29 3 views
0

Я попытался вернуться к viewcontroller, когда пользователь нажал Перейти домой в alertView, и он покажет мне ошибку (libC++ abi.dylib: завершение с неперехваченным исключением типа NSException)Как вернуться к viewcontroller в alertview

@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

Можете ли вы показать мне сообщение Exception? Обычно появляется сообщение, за которым следует исключение, непосредственно перед трассировкой стека. – Sweeper

ответ

-1

Создать segue на раскадровку между двумя контроллерами зрения и дать ему идентификатор, а затем, на обработчик завершения вашего предупреждения действий, вы можете вызвать SEGUE. Что-то по строкам:

let alertAction2 = UIAlertAction(title: "Go Home", style: .Destructive) { (action) in 
    self.performSegueWithIdentifier("MyStoryboardSegue", sender: self) 
} 

Удачи вам!

0

Поскольку вы не предоставили много информации, есть много возможностей. Я попытаюсь охватить большинство из них.

Предположим, что вы подаете предупреждение в BViewController. И вы хотите вернуться к AViewController.

Если AViewController и BViewController встроены в UINavgationController, вам придется подключить разматывания SEGUE между BViewController и AViewController.

Во-первых, в AViewController, добавьте этот метод:

@IBAction func unwind(segue: UIStoryBoardSegue) { 

} 

В раскадровке, управление-сопротивления от BViewController к «Выход» из `AviewController и выберите«раскручивать:»ака метод, который вы только что объявили. Это то, что вы должны увидеть

enter image description here

Теперь дают SEGUE вы только что добавили идентификатор, скажем, «unwindToHome».

В замыкании на UIAlertAction вызова обратно, инициируют SEGUE:

self.performSegueWithIdentifier("unwindToHome", sender: self) 

И это все!

Если вы представляя BViewController модально, то все проще, просто позвоните dismissViewControllerAnimated:

self.dismissViewControllerAnimated(true, completion: nil) 
Смежные вопросы