2015-07-23 3 views
-1

Я пытаюсь использовать AlertController, чтобы позволить пользователю вернуться в главное меню, если превышено определенное вычисленное значение. Я знаю, что использование простого сегмента приведет к проблемам с памятью. Есть ли способ использовать метод popToRootViewController в этой ситуации вместо простого использования segue? Компилятор кричит на меня (без сомнения, по уважительным причинам), но не дает мне никаких полезных предложений. Я знаю, что проблема связана с обработчиком для действия Abort Fit. Может ли кто-нибудь указать мне в правильном направлении?Есть ли лучший способ использовать обработчик в UIAlertController (Swift)?

override func viewDidLoad() { 
    super.viewDidLoad() 

    if deltaK > 2.25 { 

    var helpAlert = UIAlertController(title: "Stop!", message: "Due to high toricity, the fit should be aborted.", preferredStyle: .Alert) 

    helpAlert.addAction(UIAlertAction(title: "Abort Fit", style: UIAlertActionStyle.Default, handler: { action in self.navigationController.popToRootViewControllerAnimated(true)) }) 

    helpAlert.addAction(UIAlertAction(title: "Continue", style: UIAlertActionStyle.Default, handler: nil)) 
     self.presentViewController(helpAlert, animated: true, completion: nil) 
    } 
+1

Самая большая проблема здесь пытается представить контроллер представления в среде 'viewDidLoad()' ... – nhgrif

+0

Отмотать перетекает может быть то, что вы ищете. – Angela

ответ

2

Вы хотите добавить [weak self] в начале каждого блока обработчика, если вы ссылаетесь self в замыкании.

0

Я упускал из виду проблему разворачивания. Добавление [слабого себя] к закрытию заставило компилятор сигнализировать об ошибке. Этот код работает по назначению. nhgrif указал на проблему с использованием Alert с viewDidLoad. Должен ли я искать другой способ сделать это?

override func viewDidLoad() { 
    super.viewDidLoad() 

    if deltaK > 2.25 { 

     var helpAlert = UIAlertController(title: "Stop!", message: "Due to the high corneal toricity, a toric GP lens may provide better fit, vision, and comfort. Consider using the Empirical GP lens designer from the Main Menu, or use toric GP fitting set.", preferredStyle: .Alert) 

     helpAlert.addAction(UIAlertAction(title: "Abort Fit", style: UIAlertActionStyle.Default, handler: { [weak self] action in self!.navigationController?.popToRootViewControllerAnimated(true) })) 

     helpAlert.addAction(UIAlertAction(title: "Continue", style: UIAlertActionStyle.Default, handler: nil)) 
     self.presentViewController(helpAlert, animated: true, completion: nil) 
    } 
Смежные вопросы