在使用带有Firebase UI的UITableViewCell
的自定义类时遇到问题。这是我的代码:
在我的TableViewController
:中
self.dataSource = FirebaseTableViewDataSource(ref: firebaseRef, cellClass: MyEventTableViewCell.self, cellReuseIdentifier: "MyEventTableViewCell", view: self.tableView)
self.dataSource.populateCellWithBlock { (cell, obj) -> Void in
let snap = obj as! FDataSnapshot
print(cell)
let myEventCell = cell as! MyEventTableViewCell
myEventCell.eventNameLabel.text = "hello"
}
在我的MyEventTableViewCell
:中
class MyEventTableViewCell: UITableViewCell {
@IBOutlet weak var eventImageView: UIImageView!
@IBOutlet weak var eventNameLabel: UILabel!
var error:String?
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
我得到了:
'致命错误:在展开可选时意外发现nilvalue"
在这条线上:
myEventcell.eventNameLabel.text = "hello"
奇怪的是,"print
"给出了以下输出:
<test.MyEventTableViewCell: 0x7dab0400; baseClass = UITableViewCell; frame = (0 0; 320 44); autoresize = W; layer = <CALayer: 0x7be738c0">>
我们需要做些什么来管理UITableViewCell
的子类?
附言:我正在使用故事板来定义我的自定义单元格,我正在使用Xcode 7。
FirebaseUI开发者在这里:
如果您使用的是情节串连板/原型单元,请使用具有prototypeReuseIdentifier
和cellReuseIdentifier
的构造函数(请参阅此处)。这是一个不幸的缺陷,原因是iOS开始执行UICollectionView
,但故事板的UITableView
实现有所不同。TL;DR:情节提要会自动为您注册单元重用标识符,如果您再次尝试注册,它会覆盖它并认为它不同,这意味着您看不到任何内容。有关更多信息,请参阅使用情节提要和原型单元格上的FirebaseUI文档(尽管看起来我需要添加原型部分,所以很抱歉造成混淆)。
您似乎忘记在自定义单元格中实现init
对于FirebaseUI ios github
创建UITableViewCell或UICollectionViewCell的自定义子类,包含或不包含XIB文件。请确保实例化-initWithStyle:reuseIdentifier:以实例化UITableViewCell或-initWithFrame:以实例化UICollectionViewCell。然后,您可以将自定义类挂接到FirebaseTableViewDataSource的实现。