2017-08-17 5 views
0

J'essaie de limiter l'affichage du code, donc je veux juste appeler la fonction contenant deux chaînes pour créer un uialert plus rapide avec 1 ligne au lieu de 5/Swift: UIAlert dans la fonction - Utilisation de l'identificateur «présent» non résolu

l'erreur Je suis en train

utilisation de 'présent' identifiant non résolu

à la ligne

présent (alerte, animé: true, achèvement: néant)

// Controlling Alerts for Errors 
func showAlert(titleString: String, messageString: String) { 

// Alert to go to Settings 
let alert = UIAlertController(title: titleString, message: messageString, preferredStyle: .alert) 

alert.addAction(UIAlertAction(title: "Dismiss", style: .default, handler: { _ in 
    alert.dismiss(animated: true, completion: nil) 
})) 

self.present(alert, animated: true, completion: nil) 
} 
+0

La raison la plus courante (je crois) est parce que ce code/fonction n'est pas dans 'UIViewController'. Est-ce le cas? – dfd

+1

Qu'est-ce que 'self'? Il doit être un 'UIViewController'. – rmaddy

+0

D'où appelez-vous cet extrait? –

Répondre

1

Dans les commentaires, vous avez expliqué que c'est une fonction autonome. Il devrait fonctionner si vous en faites une extension UIViewController, par exemple:

extension UIViewController { 
    public func showAlert(_ title:String, _ message:String) { 
     let alertVC = UIAlertController(
      title: title, 
      message: message, 
      preferredStyle: .alert) 
     let okAction = UIAlertAction(
      title: "OK", 
      style: .cancel, 
      handler: { action -> Void in 
     }) 
     alertVC.addAction(okAction) 
     present(
      alertVC, 
      animated: true, 
      completion: nil) 
    } 

}

Et d'appeler dans un UIViewController:

showAlert(
    "Could Not Send Email", 
    "Your device could not send e-mail. Please check e-mail configuration and try again." 
) 
+0

Merci! et si je veux aussi l'appeler à l'intérieur de la classe système où il a été créé en écrivant showAlert ("", "") donnera l'erreur "Utilisation de l'identificateur non résolu" showAlert'' – BroSimple

+0

de toute façon pour l'appeler en dehors d'un ViewController? – BroSimple

+0

Puisque 'present' est une méthode dans' UIViewController', vous devez l'étendre *. Comme écrit, tant que * system class * comme vous l'appelez est une sous-classe de 'UIViewController', vous êtes bon. Je ne suis pas sûr exactement ce que vous essayez, mais il faut un contrôleur de vue pour en présenter un autre - je suis sûr que vous le savez, car c'est MVC de base. Deuxième commentaire à suivre .... – dfd