2017-08-07 3 views
1

J'ai créé un contrôle d'évaluation personnalisé en utilisant la documentation d'Apple au https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/ImplementingACustomControl.html. J'ai réussi à l'ajouter à une autre vue. J'essaie maintenant d'obtenir un événement d'action, disons un changement de valeur de l'événement d'évaluation, dans la nouvelle vue où j'ai ajouté ce contrôle personnalisé. Comment peut-on le faire ?Custom Action Control Swift 3.0

J'ai essayé d'utiliser le endTrackingWithTouch puis d'appeler plus tard valueChanged dans la nouvelle vue où j'ai placé cette note mais je n'ai pas réussi à la faire fonctionner.

override func endTrackingWithTouch(touch: UITouch, withEvent event: UIEvent) { 
    // return the rating here . ? 
} 

Ce que je suis essentiellement l'espoir de faire est que, dans le nouveau contrôleur de vue où j'ai placé cette contol note, j'ai une méthode qui permet de suivre l'évolution des valeurs de notation. Apprécierait n'importe quel pointeur. Merci

Répondre

1

J'avais le même problème. J'ai été capable de le comprendre en suivant ce tutoriel. Ce n'est pas un contrôle d'étoiles, mais un contrôle qui utilise un UIStackView.

https://cocoacasts.com/how-to-create-a-custom-control-using-a-bitmask/

La façon dont le tutoriel d'Apple crée un contrôle personnalisé est une sorte de mauvaise surprise. Le tutoriel Apple vous dit d'hériter de UIStackView. Au lieu de cela, vous devez hériter de UIControl, créer un UIStackView, puis ajouter l'instance UIStackView en tant que sous-vue. Pour pouvoir appeler IBActions, vous devez ajouter sendActions (pour: .valueChanged) aux emplacements appropriés dans RatingControl. Vous devriez alors être en mesure de contrôler + cliquer et faire glisser depuis votre storyboard vers votre code comme vous le feriez pour tout autre contrôle, puis choisir l'action Valeur modifiée pour votre IBAction.