0
votes

Action non appelée lorsque le bouton est taraudé dans une vue sur la pile

J'ai une vue personnalisée qui inclut une vue sur la pile. À l'intérieur de la vue sur la pile, j'ai une étiquette et un bouton.

J'ai créé ma vue sur la pile, une étiquette et une touche de pile et les a ajoutés à la vue parent. P>

override func viewDidLoad() {
    super.viewDidLoad()

    homeView = HomeView()
    homeView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(homeView)
    homeView.fullscreenView(parentView: view)
}

@objc func loginClicked(_ sender: UIButton) {        
    print("sign in button pressed")
}


2 commentaires

Avez-vous essayé de supprimer la ligne stack.isuserInterActionAcéder = false ? ou le changer en true


Oui, essayé cela et avoir le même résultat


4 Réponses :


2
votes

Tout d'abord que vous définissez userInterActionAcéder à Propriété de votre Stackview à False, définissez-la sur true. Ensuite, si cela ne fonctionne pas, considère l'approche suivante:

Il existe deux moyens possibles de résoudre ce problème, d'abord ajouter la cible de la vue Contentrale, et l'autre utilise la délégation.

Je pense que le premier Way serait plus facile à mettre en œuvre pour vous.

Vous devez ajouter votre cible à partir de votre ViewController Classe.

Mise à jour de la première classe et éliminez Ajout d'une cible: xxx

maintenant dans votre ViewController : xxx


2 commentaires

Merci pour la réponse. J'ai supprimé la cible dans la définition du bouton et l'a déplacée sur le contrôleur d'affichage comme ci-dessus, mais je reçois toujours le même résultat.


@ user2569905 Avez-vous défini isasereractionensible (code> de stackview à true?



3
votes

Vous pouvez utiliser Protocole / délégation

extension ViewController: HomeViewDelegate{
    func loginButtonClicked(sender: UIButton) {
        print("login Button Clicked")
    }
}


0 commentaires

0
votes

Ajoutez cette ligne à votre code de bouton

let signin: UIButton = {
        let button = UIButton()
        button.backgroundColor = .blue
        button.setTitle("Sign in", for: .normal)
        button.titleLabel?.font = UIFont(name: "Avenir", size: 14)
        button.setTitleColor(UIColor.white, for: .normal)
        button.addTarget(self, action: #selector(ViewController.loginClicked(_:)), for: .touchUpInside)
        button.isUserInteractionEnabled = true

        return button
    }()


0 commentaires

1
votes

Vous devez ajouter les Droits contraintes , j'ai eu ce problème, j'ai eu ce problème et la solution était ceci.

solution: < Pré> xxx

Contentroller xxx


0 commentaires