我目前正在尝试使用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会产生以下错误:
无法转换类型&#39;(ManageTableViewCell,NSObject)的值 - &gt;虚空&#39;预期参数类型&#39;(UITableViewCell,NSObject) - &gt;空隙&#39;
然后我看到了这个问题主题(https://github.com/firebase/FirebaseUI-iOS/issues/16),其中一个Firebase团队表示强迫演员会这样工作:
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!
}
然而,这会立即产生错误:
不能垂头丧气 &#39;的UITableViewCell&#39;更可选的类型&#39; ManageTableViewCell!&#39;
有没有人对如何做到这一点有任何建议。它似乎是一个普遍的问题,没有真正的解决方案。
答案 0 :(得分:2)
我解决了。问题是您需要使用“prototypeReuseIdentifier”而不是“cellReuseIdentifier”。
我的工作代码如下:
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
}