Vous pouvez utiliser un Timer
pour y parvenir.
Pour créer un Timer
, simplement déclarer votre variable d'horloge en haut de votre classe, et l'initialiser dans votre méthode viewDidLoad
:
var timer: Timer?
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 2.0, target: self, selector: #selector(addWordCell), userInfo: nil, repeats: true)
// ...
}
Maintenant toutes les 2 secondes, votre méthode addWordCell
sera appelée. D'ailleurs, je vous suggère d'utiliser la méthode insertsRows
au lieu de recharger votre vue de table tout le temps, ce sera beaucoup plus efficace. Par exemple, vous pouvez écrire votre méthode addWordCell
comme ceci:
var words = [String]()
var currentWordIndex = 0
let sentence = "Hello how are you doing today?"
func addWordCell() {
let wordsArray = sentence.components(separatedBy: " ").map({ $0 })
guard currentWordIndex < wordsArray.count else {
return
}
words.append(wordsArray[currentWordIndex])
tableView.beginUpdates()
tableView.insertRows(at: [IndexPath(row: words.count-1, section: 0)], with: .fade)
tableView.endUpdates()
currentWordIndex += 1
}
Et vous bien sûr besoin de changer votre point de vue tableau des méthodes de source de données:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return words.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath)
cell.textLabel?.text = words[indexPath.row]
return cell
}
Maintenant, si vous voulez ajouter un joli petit fading effet chaque fois qu'une nouvelle cellule apparaît, vous pouvez utiliser la méthode willDisplayCell
:
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
cell.alpha = 0.0
UIView.animate(withDuration: 0.6, animations: {
cell.alpha = 1.0
})
}
Ca y est! Évidemment, vous pouvez améliorer le code encore plus, et le personnaliser selon vos besoins, mais au moins cela devrait vous donner un petit exemple de travail montrant une approche possible.
Exécutez une minuterie toutes les 2 secondes qui affiche le texte des cellules suivantes après le chargement du tableau. Il y a quelques détails plus délicats, mais peut-être que cela pourrait marcher pour vous – TNguyen