权威-获取TableViewCell图像以停止闪烁

时间:2019-06-05 10:51:34

标签: ios swift uitableview

我为AEONS努力解决了这个问题,我以为我终于找到了解决方案。但不是。我正在尝试制作一张表格视图,将图像加载到正确的单元格中并持久保存,而不会闪烁。

这是我的解决方法:

extension SearchViewController : BookDataProcessorDelegate  {

    func didFetchSmall(image: UIImage?, for indexPath: IndexPath, in tableView: UITableView) {
        if tableView == resultsTableView {
            if let cell = tableView.cellForRow(at: indexPath) as? BookTableViewCell {
                cell.imageView?.image = image
            }
        }
    }

    func bookSearchDidFinish(with books: [Book]?) {
        self.books = books == nil ?  [] : Array(books!.prefix(MAX_BOOK_COUNT))
        resultsTableView.reloadData()
    }
}

extension SearchViewController : UITableViewDelegate, UITableViewDataSource {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return self.books.count
    }

    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        BookDataProcessor.shared.fetchSmallImage(for: books[indexPath.row], at:indexPath, in:resultsTableView)
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "bookCell", for: indexPath) as! BookTableViewCell
        cell.authorLabel.text = books[indexPath.row].authorName?[0] ?? ""
        cell.titleLabel.text = books[indexPath.row].title ?? ""
        cell.delegate = self
        cell.indexPath = indexPath

        return cell
    }

这很容易解释。基本上,BookDataProcessor.shared.fetchSmallImage会触发didFetchSmall方法,该方法应设置正确的tableView单元格。但是,细胞会闪烁并消失一半时间。我非常想知道自己在做什么错。

0 个答案:

没有答案