Ich benutze einen Timer um einen Int zu inkrementieren und mit einem Knopfdruck notiere ich die aktuelle Nummer in einem Array. Ich habe auch eine TableView, um den Inhalt des Arrays anzuzeigen. Alles funktioniert gut, außer dass wenn ich das TableView ergreife und es sogar ein wenig zum Scrollen bewege, der Timer hängen bleibt, bis ich das TableView loslasse.Swift 3.2 - Timer() mit TableView
Wie kann ich den Timer laufen lassen, egal was ich mit dem TableView mache?
Hier ist meine ViewController.swift:
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var myTableView: UITableView!
var timer = Timer()
var isTimerOn = false
var counter = 0
var samples: [Int] = []
override func viewDidLoad() {
super.viewDidLoad()
myTableView.dataSource = self
myTableView.delegate = self
}
@IBAction func startStopButton(_ sender: Any) {
switch isTimerOn {
case true:
timer.invalidate()
isTimerOn = false
case false:
timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) {_ in
self.counter += 1
print(self.counter)
}
isTimerOn = true
}
}
@IBAction func recordButton(_ sender: Any) {
samples.insert(counter, at: 0)
myTableView.reloadData()
}
}
extension ViewController {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return samples.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myCell", for: indexPath) as! MyCell
cell.number = samples[indexPath.row]
return cell
}
}
Wenn Sie es möchten, können Sie das gesamte Projekt siehe: https://github.com/Fr3qu3ntFly3r/TimerTest
Ihnen im Voraus für die Hilfe danken.
Check Seite https://stackoverflow.com/questions/29204229/countdown-timer-on-uitableviewcell-scrolling-laggy-issue-of -geeignete Ansicht – Rex