2016-09-15 3 views
1

私はusercount/topvotes sortaのものでフィルタリングしたい部屋の配列を持っています。配列を並べ替えると、セルに間違ったデータが表示されます

私はフィルタの変更をトリガするためにボタンを押して、 "CurrentSearch"に値を設定して、私のtabledataをリロードし、私の現在のcurrentsearch値をチェックし、それに応じてリストをフィルタリングしています。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 


     if currentSearch == "new" { 
     self.PersonalSearchesList = PersonalSearchesList.sorted{ $0.users < $1.users } 

     } else if currentSearch == "top" { 

      self.PersonalSearchesList = self.PersonalSearchesList.sorted{ $0.latestUser < $1.latestUser } 

     } 

フィルタリングの前に画像/ラベルが完全に正常に読み込まれます。最初のロードではcurrentSearchを "new"に設定していますが、完全に動作します。私が一気にフィルターを交換しようとすると、それは一度だけです。私はランダムなセルの複製を取得していますが、フィルタ間を入れ替えながら、間違った読み込みは一貫しています。同じセルの同じ複製が同じ場所に作成/配置されています。

セルをクリックすると、セルの情報が印刷されます。セル情報が正しく読み込まれていないにもかかわらず、実際の情報は正しいものであり、リストは順序通りに並べられています。

+4

を – Tj3n

+0

ボタンタップで並べ替える場所を移動した後、テーブルビューをリロードしても完全に機能しました。私はソートがビデオでこの一回のように行われているのを見て、それを行う方法として私と一緒に固執した。ハッハッとは思わない。それは男だ。 – user6820041

答えて

1

あなたはこのような何か行う必要があります。決して、これまでの製品は非常に悪い行動とは本当に間違っては、あなたがあなたのtableViewをリロードする前にそれをソートするために持っていることを、 `cellForRowAtIndexPath`上のデータソースを変更しようと

var currentSearch: String { 
    didSet { 
    // sort your array 
    tableView?.reloadData() // reload data 
    } 
} 
+0

完璧です。それがまさに私が必要なものです!最初のロードではどこでソートすることができますか?私はfiredbaseから私のデータを引っ張っているので、viewdidloadでは、単にcurrentSearchを設定することはできません=何かに配列が必ずしも読み込まれないでしょうか?配列に追加するときにソートを実行するので、アイテムがソートされるたびに追加されるたびに、またはそれもまたファンキーになるでしょうか? – user6820041

0

あなたがあなたのtableviewをスクロールするか、それをリロードしたときに毎回ソートされるたびにソートされます。他のメソッドのどこかでデータをソートし、リロードを正常にソートした後にtableviewをソートします。

関連する問題