2016-05-01 5 views
0

Я работаю над проектом iOS с использованием Swift. У меня есть простые контроллеры входа/регистрации/потерянного пароля для обеспечения безопасности с использованием Firebase. Проблема связана с контроллером просмотра пароля сброса. Если пользователь нажимает на него, они отправляются (представлены модально) на контроллер контроля потерянного пароля.AlertController - конфликт с UIViewController

Проблема с текущим кодом заключается в том, что, когда Firebase находит введенное электронное письмо и отправляет электронное письмо с сбросом пароля, я представляю Alert controller для подтверждения для пользователя. Проблема в том, что, когда я нажимаю «ok» на Alert Controller, я хочу, чтобы и Reset Password View Controller был уволен. Не знаю, почему он сейчас не работает. Я получаю электронные письма, но когда я нажимаю кнопку «ОК» на контроллере Alert, он только отклоняет контроллер Alert, а self.dismissViewControllerAnimated(true, completion: nil), похоже, не отклоняет представленный в модальном режиме Reset Password View Controller.

Я пробовал с self.dismissViewController(true, completion: nil), а также self.performSegueWithIdentifier("goToLoginVC", sender: nil). Нет, похоже, работает, и я не могу понять, почему.

Вот сама функция:

@IBAction func resetPasswordPressed(sender: AnyObject) { 

    let email = emailTextField.text 

    if email != "" { 

     DataService.ds.REF_BASE.resetPasswordForUser(email, withCompletionBlock: { error in 

      if error != nil { 

       // Error - Unidentified Email 
       showAlert(title: "Unidentified Email Address", msg: "Please, re-enter the email you have registered with.", actionButton: "OK", viewController: self) 

      } else { 

       // Success - Sent recovery email 

       let alertController = UIAlertController(title: "Email Sent", message: "An email has been sent. Please, check your email now.", preferredStyle: UIAlertControllerStyle.Alert) 
       let okAction = UIAlertAction(title: "OK", style: .Default, handler: nil) 
       alertController.addAction(okAction) 
       self.presentViewController(alertController, animated: true, completion: nil) 

       self.dismissViewControllerAnimated(true, completion: nil) 
      } 

     }) 

    } else { 

     showAlert(title: "Error!", msg: "Email is required in order to reset your password. Please, enter your email. ", actionButton: "OK", viewController: self) 
    } 
} 

ответ

0

Кто-то ответил, и при условии, что решение, но снял ответ после него. Итак, это то, что он сказал, и он работал хорошо (так Заслуга этого человека!):

@IBAction func resetPasswordPressed(sender: AnyObject) { 

    let email = emailTextField.text 

    if email != "" { 

     DataService.ds.REF_BASE.resetPasswordForUser(email, withCompletionBlock: { error in 

      if error != nil { 

       // Error - Unidentified Email 
       showAlert(title: "Unidentified Email Address", msg: "Please, re-enter the email you have registered with.", actionButton: "OK", viewController: self) 

      } else { 

       // Success - Sent recovery email 

       let alertController = UIAlertController(title: "Email Sent", message: "An email has been sent. Please, check your email now.", preferredStyle: UIAlertControllerStyle.Alert) 

       alertController.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { action in 

        self.dismissViewControllerAnimated(true, completion: nil) 

       })) 
       self.presentViewController(alertController, animated: true, completion: nil) 
      } 

     }) 

    } else { 

     showAlert(title: "Error!", msg: "Email is required in order to reset your password. Please, enter your email. ", actionButton: "OK", viewController: self) 
    } 
} 
+0

Я думал, что вам не нужно, что .. :) –

+0

Это было именно то, что мне было нужно! Спасибо! – Dani

+0

Рад помочь вам .. :) –

0

ли это так:

alertController.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle. Default, handler: { action in 

    //Add your logic here 

})) 
Смежные вопросы