2016-07-28 3 views
0

У меня есть некоторый код в моем проекте:оповещение Popup не показывает

@IBAction func createAccountAction(sender: AnyObject) { 
    if self.emailField.text == "" || self.passwordField.text == "" 
    { 
     let alertController = UIAlertController(title: "Oops!", message: "Please enter an email and password.", preferredStyle: .Alert) 

     let defaultAction = UIAlertAction(title: "OK", style: .Cancel, handler: nil) 
     alertController.addAction(defaultAction) 

     self.presentViewController(alertController, animated: true, completion: nil) 
    } 
    else 
    { 
     FIRAuth.auth()?.createUserWithEmail(self.emailField.text!, password: self.passwordField.text!) { (user, error) in 

      if error == nil 
      { 
       let alertController = UIAlertController(title: "Done", message: "Account created!", preferredStyle: .Alert) 

       let defaultAction = UIAlertAction(title: "OK", style: .Cancel, handler: nil) 
       alertController.addAction(defaultAction) 
       self.emailField.text = "" 
       self.passwordField.text = "" 



      } 
      else 
      { 
       let alertController = UIAlertController(title: "Oops!", message: error?.localizedDescription, preferredStyle: .Alert) 

       let defaultAction = UIAlertAction(title: "OK", style: .Cancel, handler: nil) 
       alertController.addAction(defaultAction) 

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

Как вы можете видеть, в последнем еще заявление у меня есть alertController с сообщением Oops, который будет отображаться при нажатии createAccountActionкнопка.

Но это происходит, когда пользователь нажимает кнопку и ничего не заполняет в текстовых полях.

Теперь я хочу, чтобы, когда пользователь успешно заполняет текстовые поля, должно появляться одно и то же всплывающее окно вместе с другим указанным мной текстом.

Когда я запускаю код это не та часть

self.emailField.text = "" 
self.passwordField.text = "" 

но не представляет AlertController.

Как я могу достичь того, чего хочу?

ответ

0

Вы пропустили строку:

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

, который должен быть после того, как:

self.emailField.text = "" 
self.passwordField.text = "" 

Таким образом, вы не представляете предупреждение.

Также. Вы можете изменить эту целую функцию на эту гораздо более простую:

@IBAction func createAccountAction(sender: AnyObject) { 

    if self.emailField.text == "" || self.passwordField.text == "" { 

     let title = "Oops" 
     let message = "Please enter an email and password." 

     let alertController = UIAlertController(title: title, message: message, preferredStyle: .Alert) 
     let defaultAction = UIAlertAction(title: "OK", style: .Cancel, handler: nil) 
     alertController.addAction(defaultAction) 
     self.presentViewController(alertController, animated: true, completion: nil) 

    } else { 
     FIRAuth.auth()?.createUserWithEmail(self.emailField.text!, password: self.passwordField.text!) { (user, error) in 

      var title : String 
      var message : String 

      if error == nil { 
       title = "Done" 
       message = "Account created!" 
       self.emailField.text = "" 
       self.passwordField.text = "" 
      } else { 
       title = "Oops!" 
       message = "error?.localizedDescription" 
      } 

     let alertController = UIAlertController(title: title, message: message, preferredStyle: .Alert) 
     let defaultAction = UIAlertAction(title: "OK", style: .Cancel, handler: nil) 
     alertController.addAction(defaultAction) 
     self.presentViewController(alertController, animated: true, completion: nil) 

     } 
    } 
} 
+0

Спасибо! Это исправляет это ... Поздняя ночная кодировка заставит вас следить за небольшими простыми вещами вроде этого: P – matthewdossantos

+0

Если вы удовлетворены моим ответом, нажмите кнопку рядом с ним, когда у вас есть такая возможность. – WMios

+1

Пройдет через десять минут :) – matthewdossantos

0

Вы только представляете контроллер предупреждения в разделе «else» вашего оператора «if else».

Кроме переработан пример для обеспечения ошибок, как, что не бывает:

var title: String! 
    var message: String! 

    if let error = error { 
     title = "Oops!" 
     message = error.localizedDescription 

    } else { 
     title = "Done" 
     message = "Account created!" 

     self.emailField.text = "" 
     self.passwordField.text = "" 
    } 

    let alertController = UIAlertController(title: title, message: message, preferredStyle: .Alert) 
    let defaultAction = UIAlertAction(title: "OK", style: .Cancel, handler: nil) 
    alertController.addAction(defaultAction) 
    self.presentViewController(alertController, animated: true, completion: nil) 
Смежные вопросы