ディテールテキストラベルの値に基づいてテーブルビューのセルをソートするにはどうすればよいですか?私はFirebaseに名前とスコアを持っています。私が引き出していて、最高から最低の順に表示したいのです。テーブルベースのビューセルをFirebaseのディテール番号の値でソート
現在、Firebaseの名前と値を取得していますが、メインテキストフィールドの名前のアルファベット順に表示されます。私は{$0.scoreTotal > $1.scoreTotal}
でスコア値をソートし、queryOrdered(byChild: "scoreTotal")
でFirebaseデータを注文しましたが、どちらもうまくいかないようです。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CellMale", for: indexPath as IndexPath)
let comp = comps[indexPath.row]
self.comps.sorted(by: {$0.scoreTotal > $1.scoreTotal})
let dbRef1 = FIRDatabase.database().reference().child("Live Scoring Male/\(String(describing: comp.name!))/scoreTotal")
dbRef1.queryOrdered(byChild: "scoreTotal").observe(FIRDataEventType.value, with: { (snapshot) in
let scoreTotal = snapshot.value as! Double
cell.detailTextLabel?.text = String(scoreTotal)
})
cell.textLabel?.text = comp.name
return cell
}
なぜ 'cellForRowAtIndexPath'でデータベースクエリを呼び出すのか分かりますか? – CodeChanger
@コードチェンジャー私は学んでいますので、どうやってこれを整理するかについてのお勧めをどうもありがとうと思います。私はテーブルビューのセルのdetailTextLabelとしてFirebaseの値だけを必要とするので、そこに持っていました。 Firebaseの値をviewDIdLoadにロードしてから、各セルに値をロードしますか? – user7371866