OBSERVATION des PROPRIETES
Permet d'effectuer une action quand une propriété est modifiée
Exemple : une vue en forme de post-it, qui comprend une question vrai ou faux en label. On répond vrai en déplaçant la vue vers la droite, et faux vers la gauche. En fonction de notre geste, la réponse est correct ou incorrect. Un icon pour indiqué l'état de notre réponse. La couleur de fond de la vue change de couleur également.
On a un fichier UIView pour la QuestionView, avec les IBOutlets pour label et icon
import UIKit
class QuestionView: UIView {
@IBOutlet private var label: UILabel!
@IBOutlet private var icon: UIImageView!
enum Custom {
case correct, incorrect, standard
}
var style: Custom = .standard {
didSet {
setStyle(style)
}
}
private func setStyle(_ style: Custom) {
switch style {
case .correct:
backgroundColor = UIColor(displayP3Red: 200/255.0, green: 236/255.0, blue: 160/255.0, alpha: 1)
icon.image = #imageLiteral(resourceName: "Icon Correct")
icon.isHidden = false
case .incorrect:
backgroundColor = #colorLiteral(red: 0.9565374255, green: 0.5313987136, blue: 0.5824936032, alpha: 1)
icon.image = UIImage(named: "Icon Error")
icon.isHidden = false
case .standard:
backgroundColor = #colorLiteral(red: 0.7488165498, green: 0.7731627822, blue: 0.7900409102, alpha: 1)
icon.isHidden = true
}
}
var title = "" {
didSet {
label.text = title
}
}
}
Dans le ViewController, on gére la QuestionView
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var questionView: QuestionView!
override func viewDidLoad() {
super.viewDidLoad()
startNewGame()
}
private func startNewGame() {
questionView.title = "La terre est ronde ? "
questionView.style = .standard // on remet le style à l'origine, très simple avec la vue customisée
}
private func answerQuestion() {
switch questionView.style {
case .correct:
game.answerCurrentQuestion(with: true)
case .incorrect:
game.answerCurrentQuestion(with: false)
case .standard:
break
}
etc....pour gérer la réponse