TableView перезагружает данные после модального перехода в Swift & Xcode - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь встроить функцию обмена сообщениями в новое разрабатываемое приложение.Это работает очень хорошо, но когда я переключаюсь с Контроллера Представления сообщений (тот, на который отправляются и принимаются сообщения) на Контроллер Представлений Сообщений (тот, на котором отображаются пользователи, которым следует отправлять сообщения), используя модальный переход, TableView перезагружается,Это приводит к короткому моменту, когда TableView становится пустым после перехода.Сначала я подумал, что это может быть связано с моей функцией, вызываемой в ViewDidLoad, которая вызывает перезагрузку TableView, но после его удаления TableView все еще перезагружается.Я не совсем уверен, что я могу попробовать отсюда.Заранее извиняюсь за вложение.Я собираюсь почистить это позже, но пока это работает.Любая помощь?Код ниже:

override func viewDidLoad() {
    super.viewDidLoad()

    getEmployers()
}

func getEmployers() {

    print("ONE")
    let uid = Auth.auth().currentUser?.uid

    Database.database().reference().child("users").child(uid!).child("Upcoming Jobs").observeSingleEvent(of: .value, with: { (snapshot) in
        if let dictionary = snapshot.value as? [String: AnyObject] {
            print("TWO")
            let array = Array(dictionary.keys)
            var numInArray = 0
            for item in array {
                Database.database().reference().child("users").child(uid!).child("Upcoming Jobs").child(item).observeSingleEvent(of: .value, with: { (snapshot) in
                    if let dictionary = snapshot.value as? [String: AnyObject] {
                        print("THREE")
                        let euid = dictionary["Employer"] as? String
                        numInArray += 1
                        if !self.employerUIDs.contains(euid!) {
                            self.employerUIDs.append(euid!)
                            Database.database().reference().child("users").child(euid!).child("Messages").child(uid!).observeSingleEvent(of: .value, with: { (snapshot) in
                                if let dictionary = snapshot.value as? [String: AnyObject] {
                                    let array = Array(dictionary.keys)
                                    var array2 = [Int]()
                                    for item in array {
                                        var item2 = item
                                        item2 = item2.replacingOccurrences(of: "-", with: "", options: .literal, range: nil)
                                        item2 = item2.replacingOccurrences(of: ":", with: "", options: .literal, range: nil)
                                        item2 = item2.replacingOccurrences(of: " ", with: "", options: .literal, range: nil)
                                        print(item2)
                                        array2.append(Int(item2)!)
                                    }
                                    array2.sort(by: >)
                                    print("SUBSTRING:")
                                    var timeStamp = String(array2[0])
                                    timeStamp = self.insertChar(char: "-", location: 4, string: timeStamp)
                                    timeStamp = self.insertChar(char: "-", location: 7, string: timeStamp)
                                    timeStamp = self.insertChar(char: " ", location: 10, string: timeStamp)
                                    timeStamp = self.insertChar(char: ":", location: 13, string: timeStamp)
                                    timeStamp = self.insertChar(char: ":", location: 16, string: timeStamp)
                                Database.database().reference().child("users").child(euid!).child("Messages").child(uid!).child(timeStamp).observeSingleEvent(of: .value, with: { (snapshot) in
                                        if let dictionary = snapshot.value as? [String: AnyObject] {
                                            let recentMessage = dictionary["Message"] as? String
                                            self.createUser(uid: euid!, countOfArray: array.count, num: numInArray, message: recentMessage!, time: array2[0])
                                        }
                                    })
                                }
                                else {
                                    //print("WE ARE NOT YET MESSAGING" )
                                }
                            })
                        }
                    }
                })
            }
        }
    })
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return numEmployers
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell2") as? EmployerTableViewCell
    tableView.rowHeight = 80
    if indexPath.row < employers.count {
        cell!.setInfo(fn: employers[indexPath.row].firstName, ln: employers[indexPath.row].lastName, lastMssg: employers[indexPath.row].lastMessage, lastDate: employers[indexPath.row].dateOfLastMessage)
    }
    return cell!
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "MessagesToMessaging" {
        let val = tableView?.indexPathForSelectedRow
        uidOfOtherUser = employers[val![1]].uidOfEmployer
        tableView.deselectRow(at: tableView.indexPathForSelectedRow!, animated: true)
    }
}
...