Я пытаюсь создать приложение чата с группами. Мне нужно сделать так, чтобы пользователи могли удалять группы. Я сделал все, и это сработало, за исключением одного. Если пользователь удаляет группу и создает группу с другим именем. Пользователь увидит имя удаленной группы, а не новое имя группы. Как только пользователь нажмет на группу, имя будет обновлено до нового имени группы. Кто-нибудь знает, как это исправить?Удаленные данные в виде таблицы вернутся
Группа Удалить Код:
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
let cell = familyTableview.cellForRow(at: indexPath) as! FamilyTableViewCell
let familyName = cell.familyName.text!
guard let uid = FIRAuth.auth()?.currentUser?.uid else {
return
}
let ref = FIRDatabase.database().reference()
let usersReference = ref.child("Users").child(uid).child("Familys").child(familyName)
usersReference.removeValue { (removeError, ref) in
if(removeError != nil){
print(removeError as Any)
return
}
}
let familyNamesReference = ref.child("Family Names").child(familyName)
familyNamesReference.observeSingleEvent(of: .value, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: AnyObject] {
let familyUid = dictionary["UID"] as! String
let familysReference = ref.child("Familys").child(familyUid).child("Users").child(uid)
familysReference.removeValue(completionBlock: { (removeError, ref) in
if(removeError != nil){
print(removeError as Any)
return
}
})
}
}, withCancel: nil)
self.familys.remove(at: indexPath.row)
self.savedNames.removeAll()
self.savedFunctions.removeAll()
self.savedImages.removeAll()
self.namesOtherWay.removeAll()
DispatchQueue.main.async {
self.familyTableview.setEditing(false, animated: true)
self.familyTableview.deleteRows(at: [indexPath], with: .automatic)
self.familyTableview.reloadData()
}
}
Создать сотовый код:
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return familys.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = familyTableview.dequeueReusableCell(withIdentifier: "familyCell") as! FamilyTableViewCell
if(savedNames[indexPath.row] != nil && savedFunctions[indexPath.row] != nil && savedImages[indexPath.row] != nil){
cell.familyName.text = savedNames[indexPath.row]
cell.familyFunction.text = savedFunctions[indexPath.row]
cell.familyImage.image = savedImages[indexPath.row]
return cell
}
DispatchQueue.global(qos: .userInteractive).async {
let family = self.familys[indexPath.row]
cell.familyName.text = family.name
self.savedNames.updateValue(family.name!, forKey: indexPath.row)
self.namesOtherWay.updateValue(indexPath.row, forKey: family.name!)
cell.familyFunction.text = family.function
self.savedFunctions.updateValue(family.function!, forKey: indexPath.row)
let imageLink = family.imageLink
let url = URL(string: imageLink!)
URLSession.shared.dataTask(with: url!) { (data, response, error) in
if(error != nil){
print(error as Any)
return
}
DispatchQueue.main.async {
if let downloadedImage = UIImage(data: data!) {
let image = downloadedImage
cell.familyImage.image = image
self.savedImages.updateValue(image, forKey: indexPath.row)
self.familyTableview.reloadData()
}
}
}.resume()
}
return cell
}
Я надеюсь, что кто-то сможет мне помочь! Благодарю.
добавить метод cellforRowAtindexpath. – KKRocks
@KKRocks, что вы имеете в виду? –
, о котором идет речь, не имеет никакого значения для метода cellforRowAtIndexpath. средний метод табличного представления данных. – KKRocks