как перезагрузить просмотр таблицы автоматически - PullRequest
0 голосов
/ 28 января 2019

Привет! Я делаю экран сообщений, где пользователи добавляют сообщения и просматривают их. Это контроллер просмотра для просмотра.Я получаю информацию из firebase и перезагружаю эту информацию в ячейки моего табличного представления, все идет отлично.Однако, чтобы перезагрузить экран и посмотреть, обновлены ли мои сообщения, мне нужно закрыть приложение и запускать его снова каждый раз, хотя я использую функцию .reloadData (), и она не перезагружается автоматически после каждой публикации.вот мой код, где я делаю ошибку?или я что-то упустил?

override func viewDidLoad() {
    super.viewDidLoad()
    self.navcik.title = "Posts"
    tableView = UITableView(frame:view.bounds, style: .plain)
    view.addSubview(tableView)
    let cellnib = UINib(nibName: "postTableCell", bundle: nil)
    tableView.register(cellnib, forCellReuseIdentifier: "postCell")

    tableView.delegate = self
    tableView.dataSource = self
    tableView.reloadData()
    observeposts()
}
func observeposts() {
    let db = Firestore.firestore()
    db.collection("posts").getDocuments { (snap, error) in
        var tempposts = [Post]()
        if error != nil {
            print("error:\(String(describing: error))")
        } else {
            for document in snap!.documents {
                if let dict = document.data() as? [String: Any] ,
                let username = dict["username"] as? String,
                let title = dict["title"] as? String,
                    let desc = dict["desc"] as? String {
                    let post = Post(id: "1", username: username, title: title, desc: desc)
                    tempposts.append(post)
                }

            }
            self.posts = tempposts
            self.tableView.reloadData()
        }

    }
}
@IBOutlet weak var navcik: UINavigationItem!

func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "postCell", for: indexPath) as! postTableCell
    cell.set(post: posts[indexPath.row])
    return cell
}

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Ну, я только что добавил освежитель, посмотрел туда сообщения и перезагрузил, теперь работает отлично.

0 голосов
/ 28 января 2019

попробуйте

 for document in snap!.documents {
            if let dict = document.data() as? [String: Any] ,
            let username = dict["username"] as? String,
            let title = dict["title"] as? String,
                let desc = dict["desc"] as? String {
                let post = Post(id: "1", username: username, title: title, desc: desc)
                tempposts.append(post)
            }
            tableView.reloadData()
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...