У меня есть 30ish языки таблица разделена 4 секции ..Swift: UITableView не обновляет данные должным образом с помощью перезагрузки()
Моя проблема заключается в том, что, когда я хочу, чтобы изменить значение в одной из ячеек, то значение не обновляется/изменяется, пока я не прокручу эту ячейку вне поля зрения и обратно.
Я использую UIAlert, чтобы ввести новое значение, сохранить его в БД .. И значение сохраняется в порядке, и я получаю правильное значение обратно из БД.
Но когда я перезаряжаю tableView
, он не отображает новое значение.
Bouns: У меня есть два табличных вида: templateTableView
и один по имени: fieldTableView
. fieldTableView
- это тот, который я пытаюсь изменить в значениях. И изменение tableView.reload()
на self!.fieldTableView.reload()
тоже не работает.
От didSelectRowAtIndexPath:
}else if currTemplate!.hasPassFail{
var alertController:UIAlertController?
alertController = UIAlertController(title: "Enter new value",
message: "Enter new value",
preferredStyle: .Alert)
alertController!.addTextFieldWithConfigurationHandler(
{(textField: UITextField!) in
textField.placeholder = ""
textField.keyboardType = UIKeyboardType.NumbersAndPunctuation
})
let action = UIAlertAction(title: "Submit",
style: UIAlertActionStyle.Default,
handler: {[weak self]
(paramAction:UIAlertAction!) in
if let textFields = alertController?.textFields{
let theTextFields = textFields as! [UITextField]
let enteredText = theTextFields[0].text
//what to do after edit, here:
switch indexPath.section{
case 1:
if let value = enteredText.toInt(){
self!.currTemplate!.backgroundMin[indexPath.row] = value
}else{
self!.presentViewController(self!.wrongNumberAlert, animated: true, completion: nil)
return
}
case 2:
if let value = enteredText.toInt(){
self!.currTemplate!.legendMin[indexPath.row] = value
}else{
self!.presentViewController(self!.wrongNumberAlert, animated: true, completion: nil)
return
}
case 3:
if let value = enteredText.toDouble(){
self!.currTemplate!.ratioMin[indexPath.row] = value
}else{
self!.presentViewController(self!.wrongNumberAlert, animated: true, completion: nil)
return
}
default:
0-0
}
var date = NSDate()
self!.currTemplate!.timestamp = date.makeTimestampString()
self!.appDelegate.dbInterface.updateTemplate(self!.currTemplate!)
//self!.templateArr = self!.appDelegate.dbInterface.findTemplates()
self!.findAllNotDeleteOnSync()
println("Data was added to DB: \(self!.currTemplate!.ratioMin[indexPath.row])")
self!.templateTableView.reloadData()
self!.templateTableView.selectRowAtIndexPath(self!.currentTemplateIndex, animated: false, scrollPosition: .None)
dispatch_async(dispatch_get_main_queue(),{
tableView.reloadData()
})
}
})
let cancel = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.Default, handler: nil)
alertController?.addAction(cancel)
alertController?.addAction(action)
self.presentViewController(alertController!, animated: true, completion: nil)
}
Редактировать Часть кода, который должен работал так:
dispatch_async(dispatch_get_main_queue(),{
tableView.reloadData()
})
вы уверены, что подключенное tableviews в раскадровке или инициализировано это правильно? –
Да '@IBOutlet слабый var templateTableView: UITableView!' '@IBOutlet weak var fieldTableView: UITableView!' – Bjqn
r u правильно получить индексный путь uitableviewcell, который редактируется ?? – iAnurag