2017-02-03 6 views
0

データベースから画像を非同期にロードした後、テーブルビューセルの高さを更新しようとしています。 ユースケースは次のとおりです。 セルが表示されているときにイメージを取得します。だから私は `loadImageWith(callBack:() - >())それをセルで呼び出す必要があります。 私はコールバックを受け取ったとき、私は画像で特定のセルを更新したいと思います。 画像にはプレースホルダなどがありません。したがって、画像が利用できない場合、そのセルは空です。データベースから画像を取得した後にセルの高さを更新する

私は他のスレッドで説明したが、明らかに、これは無限ループにつながるようにコールバックで
self.tableView.beginUpdates() self.tableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.fade) self.tableView.endUpdates()
を呼び出そうとしています。 画像を画像ビューに追加した後で、cell.needsLayoutまたは/およびcell.layoutIfNeededに電話してみました。 行に影響を与えません。

サーバーからではなくローカルデータベースからイメージデータを取得する必要があるため、サードパーティライブラリを使用していません。

imがviewDidLoadのすべての画像をロードしていて、
self.tableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.fade)
を呼び出す場合は動作しますが、可視のセルだけをロードする必要があります。

希望には、この問題の解決策があります。

答えて

0

画像が

self.tableView.beginUpdates() 
self.tableView.reloadRows(at: [indexPath], with: UITableViewRowAnimation.fade) 
let selectedCell = tableView.cellForRow(at: indexPath) 
selectedCell.height = yourHeight 
self.tableView.endUpdates() 
としてアップロードした後にセルの高さを設定することができます
関連する問題