Présentation de UIAlertController à partir de UITableViewCell
Je suis en train d'ajouter des alertes personnalisé UITableViewCell
de présenter un UIAlertView
j'ai besoin d'appeler presentViewController de UIViewController
. Cependant, je ne suis pas au courant de la façon d'accéder à l'actuel UIViewController
instance de la UITableViewCell
classe. Le code ci-dessous est une tentative de ma part de le faire avec une extension.
J'obtiens cette erreur
Expression résolue de la partie inutilisée de la fonction.
extension UIViewController
{
class func alertReminden(timeInterval: Int)
{
var refreshAlert = UIAlertController(title: "Refresh", message: "All data will be lost.", preferredStyle: UIAlertControllerStyle.Alert)
refreshAlert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action: UIAlertAction!) in
Alarm.createReminder("Catch the Bus",
timeInterval: NSDate(timeIntervalSinceNow: Double(timeInterval * 60)))
}))
refreshAlert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: { (action: UIAlertAction!) in
println("Handle Cancel Logic here")
}))
UIViewController.presentViewController(refreshAlert)
}
}
class CustomRouteViewCell: UITableViewCell {
source d'informationauteur applejuiceteaching
Vous devez vous connecter pour publier un commentaire.
Cette extension vous permet de trouver le viewController que présente la cellule
Ou de l'utilisation
rootViewController
:UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(refreshAlert, animated: true, completion: nil)
Essayer de remplacer cette ligne de code:
Swift 2
Swift 3
Une autre façon de le faire est de déclarer d'un protocole et d'un délégué de la propriété dans la vue de table de cellules de la classe, de mettre le contrôleur comme les cellules délégué et de mettre en œuvre le protocole dans le contrôleur qui est en mesure de donner l'alerte-vue-contrôleur.
De Leo solution a fonctionné pour moi. Je l'ai utilisé pour présenter une AlertView à partir d'une collection Personnalisée de vue de la cellule.
Mise à jour pour Swift 3.0:
Espère que cela aide.
Vous pouvez essayer d'utiliser un protocole, et de déléguer, à l'aide de cette méthode va vous donner l'occasion non seulement de présenter des alertes, mais pourraient vous donner une meilleure interaction avec votre point de vue contrôleur dans le cas où vous en avez besoin à l'avenir. Par exemple:
Puis dans votre tableViewCell vous allez créer quelque chose comme:
Puis dans votre viewController, tout d'abord définir votre viewController que les alertes
Deuxième, définissez le délégué de la cellule dans la "cellForRowAt" méthode
Et juste comme cela, vous pouvez créer de multiples fonctions qui s'adaptent à votre besoin en lien avec la communication avec votre viewController ou viewControllers.