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?
3 Réponses :
non, ce n'est pas possible - mais je me demande pourquoi vous feriez ça?
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
Oui, c'est possible
func a() {
c()
}
func b() {
c()
}
func c() {
print("hello world")
}
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()
}
}
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 votreBaseViewController (), vous pouvez le rendre privé pour empêcher les autres de l'appeler.