使用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
}
}
我得到了:
'致命错误:在打开Optional时意外发现nil 值“
在这一行:
myEventcell.eventNameLabel.text = "hello"
奇怪的是“print
”给出了以下输出:
<test.MyEventTableViewCell: 0x7dab0400; baseClass = UITableViewCell; frame = (0 0; 320 44); autoresize = W; layer = <CALayer: 0x7be738c0">>
我们需要做些什么来管理UITableViewCell
的子类?
PS:我正在使用故事板来定义我的自定义单元格,我正在使用Xcode 7。
答案 0 :(得分:4)
FirebaseUI开发人员:
如果您正在使用故事板/原型单元格,请使用包含prototypeReuseIdentifier
与cellReuseIdentifier
的构造函数(请参阅here)。这是一个令人遗憾的疣,这是由iOS开始UICollectionView
的方式引起的,但却使Storyboard的UITableView
实现与众不同。 TL; DR:故事板自动为您注册单元格重用标识符,如果您尝试再次注册它,它将覆盖它并将其视为不同,这意味着您没有看到任何内容。有关详细信息,请参阅Using Storyboards and Prototype Cells上的FirebaseUI文档(虽然看起来我需要添加原型位,但请注意道歉。)
答案 1 :(得分:0)
您似乎忘了在自定义单元格中实现init
对于FirebaseUI-ios github
创建UITableViewCell或UICollectionViewCell的自定义子类,包含或不包含XIB文件。确保实例化-initWithStyle:reuseIdentifier:实例化UITableViewCell或-initWithFrame:实例化UICollectionViewCell。然后,您可以将自定义类挂钩到FirebaseTableViewDataSource的实现。