UITableViewを使用して、データを3ブロックで読み込みました。私は最新の10レコードをロードし、ユーザーがUIRefreshControl
を使用してプルアップすると、前の10をロードし、前のブロックの最後のローを表示します。私はデータベースUITableViewのコンテンツサイズが変更される理由
previousContentSizeHeight = tableView.contentSize.height
から新しいセットをロードし、データが来たときに、私の配列を更新、私はテーブル
let difference = tableView.contentSize.height -
previousContentSizeHeight - MinimumCellHeight
self.messageTableView.setContentOffset(CGPoint(x: 0, y: difference), animated: false)
の新しいコンテンツサイズを計算するために、以前使用直前に前のコンテンツのサイズを保存しますこれはほとんどの部分で機能します。最初のセットをロードするときと2番目のセットをロードするときはviewDidAppearの後で正しく動作しますが、3番目のセットではコンテンツサイズの変更が開始されます。それは減少する!私が理解しているのは、データを追加する場合(何も削除しない場合)、コンテンツのサイズが拡大するだけです。 私はこのイベントのようなテーブルのコンテンツサイズの私のコードの読み取り値の複数の場所にあります。
func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) {
print("tableView.contentSize.height is: \(tableView.contentSize.height)")
}
私は上下にスクロールしていて、私は数の減少を確認し、時には なぜコンテンツサイズの変更を増減サイズで!?
注:コンテンツのオフセットを使用したいと思います。私はIndexPathよりも多くの運があります。
更新日1 @Sohil R. Memon:私はあなたの提案を試みました。スクリーンショットごとに、printステートメントを追加しました。ご覧のとおり、viewDidLayoutSubviewsはまだ実行されていません。私はself.messageTableViewでendDisplayingの内側にしようとしたセルが表示され、didEndDisplaying
が呼び出されるとただのtableView
すべてのデータフェッチで 'contentSize'を' yourDataSourceArray.count * minimumCellHeight'のように設定するべきではありませんか? – Rikh