8
votes

Swift - Valeur de Type ViewController n'a pas de membre * MODENAME *

Dans mon application, j'ai plusieurs scénarios, chacun indiquant un autre uialertController , donc j'ai créé une fonction pour afficher cette alerte, mais je ne peux pas sembler appeler auto.function à l'intérieur de "Okaction" . Je reçois cette erreur:

valeur de type 'ViewController' n'a aucun membre 'DOACTION'

voici le code: xxx

Voici l'une des fonctions que j'appelle: xxx < p> Comment puis-je le résoudre?


0 commentaires

3 Réponses :


0
votes

Je pense que la bonne façon de spécifier une fermeture est comme ceci: xxx

La principale chose est que vous ne pouvez pas appeler ceci.doaction () parce que le Le paramètre que vous passez dans la fonction n'est pas une propriété sur votre contrôleur, non?


3 commentaires

Edit: me donne toujours la même erreur. Merci pour la réponse rapide (j'ai répondu avant l'apparition de la modification, je vais vérifier


Ça a marché. J'ai choisi la réponse de Luk2302 car il a expliqué ce qui n'allait pas. Merci quand même!


@ user3902533 Pas de soucis, la principale chose est que vous avez résolu votre problème. Je voulais développer ma réponse, mais j'ai vu que vous avez déjà trouvé ce que vous cherchiez ...



14
votes
  1. Supprimer le auto devant DOACTION () Puisque vous n'appelez pas l'action sur l'objet Soi.

  2. Si vous faites que le compilateur vous dira de
    Utilisation non valide de '()' pour appeler une valeur de type non-fonction '()' . C'est le cas car DOACTION n'est pas une fonction mais un tuple vide. Une fonction a des paramètres d'entrée et un type de retour. Par conséquent, le type de DOACTION doit être () -> void - il ne prend aucune entrée ni retour vide , c'est-à-dire ne pas retourner rien.

    Le code doit être comme ceci: xxx

    si vous souhaitez transmettre l'action à la méthode DOACTION Vous devriez changer le type à (uialertating) -> void et appelez-le via DOACTION (action) .


1 commentaires

Merci! J'ai choisi votre réponse parce que cela explique plus



1
votes

à partir de votre code DOACTION est le troisième paramètre de la fonction showalertController .

Alors Premièrement: Changer DOACTION: () à DOACTION: () -> () Cela signifie que la fabriquage est un fermeture sans paramètres et retour vide.

Deuxièmement: l'appel ne devrait pas être Self.Dayeaction () mais juste Doaction () Parce que c'est un paramètre et non une variable d'instance


0 commentaires