2017-03-29 10 views
2

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 enter image description here

+0

すべてのデータフェッチで 'contentSize'を' yourDataSourceArray.count * minimumCellHeight'のように設定するべきではありませんか? – Rikh

答えて

1

、そこに処理するために、より多くのものがあり、あなたが再びcellForItemのコールをスクロールしたときにそれはあなたに異なるサイズを提供します。

正確にcontentSizeUITableViewにするには、すべてのセルが表示されたら、下の方法から取得できます。あなたのUIViewControllerクラスに以下のメソッドを書くだけです。

override func viewDidLayoutSubviews() { 
    print(tableView.contentSize.height) //Exact Content Size of UITableView 
} 

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) { 
    tableView.layoutIfNeeded() 
} 

+0

回答ありがとうございます。私の問題はビューの最初の読み込み時には起こっていません。それはうまく動作します。私の問題は、3番目のブロックをロードするとき、3番目のセットを取得するDBに3番目の呼び出しです。 あなたが述べたイベントを追加しましたが、テーブルの内容が変更されたとき、またはdidEndDisplayingイベントがトリガされたときに呼び出されることはありません。 – user1019042

+0

@ user1019042最新の回答をご確認ください –

+0

@SohilRMemonアップデート#1をご覧ください – user1019042

関連する問題