2017-03-01 1 views
0

私はUITableViewを使用しています。複数の新しい項目があるときに一度に1つずつ追加するのではなく、一度に1つずつ新しい項目を追加します。今、私のコードは次のようなものです:iOS TableViewで新しいセルを追加するまでの遅延があります

for rowNum in 0...(counter-1) { 

    let when = DispatchTime.now() + 1 
    DispatchQueue.main.asyncAfter(deadline: when) { 
    self.tableView.insertRows(at: [IndexPath(row: rowNum, section: lastSection)], with: .fade) 
    } 
} 

しかし、それは動作していません。

+1

「機能していません」と明記できますか?それはあなたが何の答えも得られなかった理由かもしれません(それはまた、私は今それを行うでしょう)。 – halfer

答えて

1

これはしばらくお待ちしていますが、おそらく私は助けることができます。新しい行やセクションを挿入するときは、tableView.beginUpdates()とtableView.endUpdates()を使用する必要があります。また、これらの2つの関数の間で、行番号と配列の数は等しくなければなりません。それ以外の場合は、エラーがスローされます。試してみてください:

let when = DispatchTime.now() + 1 
DispatchQueue.main.asyncAfter(deadline: when) { 
    self.tableView.beginUpdates() 
    self.<yourArray>.append(<newElement>) 
    self.tableView.insertRows(at: [IndexPath(row: self.<yourArray>.count - 1, 
              section: lastSection)], with: .fade) 
    self.tableView.endUpdates() 
} 
+0

実際には、tableView.beginUpdates()およびtableView.endUpdates()*を使用する必要はありません。複数の**同時挿入**挿入/削除/移動操作の場合にのみ必要です。それとは別に、質問の主な目標を打ち負かすだろう。 – vadian

+0

はい、実際にあなたはアップデート機能について正しいです。なぜコードがうまくいかないのかわからないので、私は潜在的な問題を推測しようとしました。次に、_data source_と_indexPath_の間の**不等式**が原因になります。 –

関連する問題