je les suivantes Protocol
:Swift: Protocole de délégation ne pas fixer UILabel correctement
protocol SoundEventDelegate{
func eventStarted(text:String)
}
que j'appelle dans cette classe:
class SoundEvent {
var text:String
var duration:Double
init(text: String, duration: Double){
self.text = text
self.duration = duration
}
var delegate : SoundEventDelegate?
func startEvent(){
delegate?.eventStarted(self.text)
}
func getDuration() -> Double{
return self.duration //TODO is this common practice?
}
}
que j'ai mon ViewController
conformes aux normes:
class ViewController: UIViewController, SoundEventDelegate {
//MARK:Properties
@IBOutlet weak var beginButton: UIButton!
@IBOutlet weak var kleinGrossLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//DELEGATE method
func eventStarted(text:String){
kleinGrossLabel.text = text
}
//MARK: actions
@IBAction func startImprovisation(sender: UIButton) {
var s1:Sentence = Sentence(type: "S3")
var s2:Sentence = Sentence(type: "S1")
var newModel = SentenceMarkov(Ult: s1, Penult: s2)
s1.start()
beginButton.hidden = true
}
}
Mais quand je cours l'application kleinGrossLabel.text
ne change pas. Est-ce que je parle de l'étiquette de la mauvaise façon? Ou est-ce la façon dont je fais la délégation qui est incorrecte?
Voici les liens vers les définitions de Class
complètes Sentence
et SentenceMarkov
https://gist.github.com/anonymous/9757d0ff00a4df7a29cb - Sentence
https://gist.github.com/anonymous/91d5d6a59b0c69cba915 - SentenceMarkov
getters comme ça ne sont pas pratique courante, car votre getter et votre variable ont le même contrôle d'accès, donc n'importe où vous pouvez appeler ce getter, vous pouvez simplement accéder directement à la variable.Ils sont utiles si vous voulez avoir différents niveaux de contrôle d'accès, comme un var privé avec un getter public –
êtes-vous en train de paramétrer le délégué dans votre classe SoundEvent sur un objet réel? –
@WillM. oui voir le premier gist.'let event1 = SoundEvent (texte: "klein", durée: DurationsArray [Int (duréeIndex1)]) 'dans la classe' Sentence' – Thalatta