2
votes

Appel d'une fonction à l'intérieur d'une fonction dans une autre fonction

Je suis nouveau dans la Programmation iOS et j'ai eu ce problème. Disons que j'ai ces deux fonctions:

class BaseViewController: UIViewController, ErrorMessageDelegate {
    var uiView =  UIView();
    var viewErrorMessage:ErrorMessage!

    func refresh(_sender: AnyObject) {
        print("testing")
    }

    func getErrorMessage(message:String) {
        super.viewDidLoad()
        Dialog.dismiss()
        ErrorMessage.message = message
        viewErrorMessage = Bundle.main.loadNibNamed("ErrorMessage", owner: self, options: nil)?.first as! ErrorMessage
        viewErrorMessage.delegate = self
        self.view.addSubview(viewErrorMessage)

        func removeSubView() {
            viewErrorMessage.removeFromSuperview()
        }
    }
}

Je veux appeler la fonction removeSubView à l'intérieur de la fonction refresh . J'ai dû le faire car je devais remplacer la fonction actualiser dans ma sous-classe. Et je dois mettre la fonction removeSubView dans getErrorMessage parce que je devrais le faire. Est-ce que quelqu'un sait comment faire ça?


2 commentaires

L'avez-vous essayé en écrivant la méthode en dehors de la méthode getErrorMessage ?


Ce n'est pas seulement Swift. C'est parce que vous n'avez pas accès à d'autres étendues. Je suggérerais de déplacer removeSubView () vers une portée accessible dans votre BaseViewController () , vous pouvez le rendre privé pour empêcher les autres de l'appeler.


3 Réponses :


1
votes

non, ce n'est pas possible - mais je me demande pourquoi vous feriez ça?


3 commentaires

Qu'est-ce que removeSubview () a à voir avec getErrorMessage ()? Rien. Il n'y a donc aucune raison pour que cela soit dans le cadre de getErrorMessage


viewErrorMessage doit être appelé dans getErrrorMessage car il y est ajouté


@FirdaSahidi Eh bien, déplacez-le



2
votes

Oui, c'est possible

func a() {
    c()
}

func b() {
    c()
}

func c() {
    print("hello world")
}


0 commentaires

4
votes

Veuillez vous référer au code ci-dessous. Cela vous aidera à résoudre le problème.

Code:

class BaseViewController: UIViewController, ErrorMessageDelegate {
    var uiView =  UIView();
    var viewErrorMessage:ErrorMessage!

    func refresh(_sender: AnyObject) {
        removeSubView()
    }

    func getErrorMessage(message:String) {
        super.viewDidLoad()
        Dialog.dismiss()
        ErrorMessage.message = message
        viewErrorMessage = Bundle.main.loadNibNamed("ErrorMessage", owner: self, options: nil)?.first as! ErrorMessage
        viewErrorMessage.delegate = self
        self.view.addSubview(viewErrorMessage)
    }
    func removeSubView() {
        viewErrorMessage.removeFromSuperview()
    }
}


0 commentaires