グループでチャットアプリケーションを作成しようとしています。ユーザーがグループを削除できるようにする必要があります。私はすべてを作ったし、一つのことを除いて働いた。ユーザーがグループを削除し、別の名前のグループを作成する場合。ユーザーには削除されたグループ名が表示され、新しいグループ名は表示されません。ユーザーがグループをクリックすると、その名前が新しいグループ名に更新されます。誰もがこれを修正する方法を知っていますか?私は、誰かが私を助けることができることを願っていますテーブルビューで削除されたデータが返されます
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
}
:セルのコードを作成します
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()
}
}
:
グループでは、コードを削除します!ありがとう。
cellforRowAtindexpathメソッドを追加します。 – KKRocks
@KKRocks、どういう意味ですか? –
には何もcellforRowAtIndexpathメソッドがありません。テーブルビューのデータソースメソッドを意味します。 – KKRocks