У меня есть определенная загадка, где мне нужно определенное UILabel
внутри UITableViewCell
для обновления каждую минуту.В настоящее время каждую минуту вся ячейка обновляется и отображается под предыдущей, см. Ниже, все, что я хочу сделать, это обновить UILabel
под названием watchTime
:
Вот мой табличный вид, где я инициализирую отсчет времени в часах от модели
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "watchTimeCell", for: indexPath) as! WatchTimeCell
if userModel.count > indexPath.row {
//this is the value i want to update
cell.watchTime.text = "\(String(describing: userModel[indexPath.row].watchTime!))"
}
return cell
}
А вот как я обновляю свою ячейку в настоящее время:
@objc func updateCounting(){
watchTime += 1
if watchTime % 60 == 0 {
let userRef = Database.database().reference().child("users").child(uid!).child("watchTime")
userRef.runTransactionBlock({ (currentData: MutableData) -> TransactionResult in
let newValue: Int
if let existingValue = (currentData.value as? NSNumber)?.intValue {
newValue = existingValue + 1
} else {
newValue = 1
}
currentData.value = NSNumber(value: newValue)
//this is the line where I reload the cell
DispatchQueue.main.async(execute: {
self.watchTableView.reloadData()
})
return TransactionResult.success(withValue: currentData)
})
watchTime = 0
}
}
Что такоелучший способ пойти об этом?Спасибо!
РЕДАКТИРОВАТЬ: Добавлено numberOfRowsInSection
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return userModel.count
}