2017-07-10 12 views
0

私は、ほぼ正確に動作するUITableViewの設定を持っていますが、スクロールしていくほど早く上下にスクロールすると、順不同のセルがシャッフルされます。私はインデックスパスを反映するようにラベルを設定し、それが始まったときでもスクロール時のUITableViewのシャッフル

[0,0] [0,1] [0,2] [0,3] [0,4] [0,5] [[ 0,6]上下に迅速にいくつかの気の抜けたビールの後

、細胞は、この

[0,1]、[0,6]、[0,2]、[0,3]、[0,4のように見えます] [0,5] [0,0] [0,1]

私のコードは、UITにApple docsから次

import UIKit 

class TableViewController : UITableViewController { 

    var dates: [Date]? 

    override func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return dates?.count ?? 0 
    } 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     guard let cell = tableView.dequeueReusableCell(withIdentifier: tableViewCell.storyboardID, for: indexPath) as? tableViewCell else { fatalError() } 

     let date = dates?[indexPath.row] 
     cell.date = date 
     cell.delegate = self 
     cell.cellIndex = indexPath 

     return cell 
    } 
} 
+0

tableviewcontrollerクラス全体を投稿できますか?私はここで何が起きているのかを99%確信していますが、完全なコードなしで修正を手伝うのは難しいでしょう。 –

+0

いつ実際にセルの内容を設定していますか?セルが再利用されているときにデータを正しく設定していないと思われます。 –

答えて

0

に似ています再利用識別子を渡し、テーブルビューにメッセージ:ableView

テーブルビューが表示用セルオブジェクトを構成するデータ・ソースを要求すると、データソースはdequeueReusableCellWithIdentifierを送信することによってキューに入れられたオブジェクトにアクセスすることができます。データソースは、セルの内容と特別なプロパティを返す前に設定します。セルオブジェクトのこの再利用は、セル作成のオーバーヘッドを排除するため、パフォーマンスの向上につながります。

この場合、indexPathの値を他のセルで再利用可能なcellelldexに保存しています。したがって、以前に割り当てられたキューに基づいて値がランダムに表示されます。

これに遭遇するには、viewControllerの配列変数に値を格納するか、データソースがセルを再作成するたびに配列から一貫して取得します。

第2に、indexPathをUILabelなどのセルUIエレメントに直接割り当てることができます。

cell.titleLabel.text = "\(indexPath)" 
関連する問題