2017-03-15 21 views
0

私はチャットアプリケーションを構築しています。私はUTableViewを使ってチャットボックスを作っています。私がチャットボックスの画面を読み込むとき、私は最後の未読メッセージのインデックスパスにtableviewをスクロールする必要があります。私はscrollToRowAtIndexPathメソッドを使用しています。この場合、indexPath 0からすべてのセルに対してcellForRowIndexPathが呼び出されます。これはアプリケーションのパフォーマンスに悪影響を及ぼします。セルの高さに自動寸法を使用しているので、setContentOffsetメソッドも使用できません。UITableViewの可視(最後)のセルのみをリロードする方法は?

中間のセルをロードせずに、必要なindexPathにテーブルビューをスクロールする方法はありますか?

答えて

0
self.tblView.reloadData() 
// First figure out how many sections there are 
    let lastSectionIndex = self.tblView!.numberOfSections - 1 

// Then grab the number of rows in the last section 
    let lastRowIndex = self.tblView!.numberOfRowsInSection(lastSectionIndex) - 1 

// Now just construct the index path 
    let pathToLastRow = NSIndexPath(forRow: lastRowIndex, inSection: lastSectionIndex) 

// Make the last row visible 
    self.tblView?.scrollToRowAtIndexPath(pathToLastRow, atScrollPosition: UITableViewScrollPosition.None, animated: false) 
+0

私はすでに同じロジックを使用しています。しかし、scrollToRowAtIndexPathは、最終セルに到達する前にすべての中間セル(0から)をロードします。 – Advaith

0

私は、あなたが望む動作を達成できる2つの方法を考えることができます。 とscrollToRowAtIndexPathを使用

  1. は、算出した高さsetContentOffset方法を使用 =偽
  2. アニメーション。実際にセルの高さを計算する必要があります。
関連する問題