0

現在、Firebase UI を使用して UITableView にカスタム セルを設定しようとしています。残念ながら難しいことが判明しており、以前に提案された修正は機能していません。

ドキュメント(https://github.com/firebase/FirebaseUI-iOS#using-storyboards-and-prototype-cells)はこれを示しています:

self.dataSource = FirebaseCollectionViewDataSource(ref: firebaseRef cellClass: YourCustomClass.self cellReuseIdentifier: @"<YOUR-REUSE-IDENTIFIER>" view: self.collectionView)

self.dataSource.populateCellWithBlock { (cell: YourCustomClass, obj: NSObject) -> Void in
  // Populate cell as you see fit
  cell.customView = customView;
}

self.collectionView.dataSource = self.dataSource;

これをコピーして独自の TableViewCellClass を挿入すると、次のエラーが発生します。

タイプ '(ManageTableViewCell, NSObject) -> Void' の値を予期される引数タイプ '(UITableViewCell, NSObject) -> Void' に変換できません

次に、この問題のスレッド ( https://github.com/firebase/FirebaseUI-iOS/issues/16 ) を見ました。ここで、Firebase チームの 1 人が、キャストを強制すると次のように機能すると述べました。

 self.dataSource.populateCellWithBlock { (cell: UITableViewCell, obj: NSObject) -> Void in
  // Populate cell as you see fit, like as below
  var customCell = cell as! CustomTableViewCell;
  let snapshot = obj as! FDataSnapshot; // danger this can be null on deletion!
}

ただし、これによりすぐにエラーが発生します。

「UITableViewCell」からよりオプションのタイプ「ManageTableViewCell!」にダウンキャストできません。

これを行う方法について何か提案はありますか。これは、実際の修正がない一般的な問題のようです。

4

1 に答える 1

2

私はそれを解決しました。問題は、「cellReuseIdentifier」ではなく「prototypeReuseIdentifier」を使用する必要があることです。

私の作業コードは次のとおりです。

    dataSource = FirebaseTableViewDataSource(query: firebaseQuery, prototypeReuseIdentifier: "textCell", view: self.tableView)

    dataSource.populateCellWithBlock { (cell: UITableViewCell, obj: NSObject) -> Void in

        var customCell = cell as! ManageTableViewCell

        let snap = obj as! FDataSnapshot

        customCell.label99.text = snap.key as String
    }
于 2016-03-12T20:43:32.973 に答える