2

UITableViewCell在使用 Firebase-UI的自定义类时遇到问题。这是我的代码:

在我的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
     }
}

我有:

“致命错误:在展开可选值时意外发现 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。

4

2 回答 2

4

FirebaseUI 开发人员在这里:

如果您正在使用情节提要/原型单元格,请使用具有prototypeReuseIdentifiervs 的构造函数cellReuseIdentifier(请参见此处)。这是一个不幸的缺陷,由 iOS 开始做UICollectionViews 的方式引起,但UITableView故事板的实现却有所不同。TL;DR:Storyboards 会自动为您注册单元重用标识符,如果您尝试再次注册它,它将覆盖它并认为它不同,这意味着您什么也看不到。有关更多信息,请参阅有关使用情节提要和原型单元的 FirebaseUI 文档(尽管看起来我需要添加原型位,因此为混淆表示歉意)。

于 2016-02-10T21:17:28.017 回答
0

您似乎忘记在自定义单元格中实现 init

对于 FirebaseUI-ios github

创建 UITableViewCell 或 UICollectionViewCell 的自定义子类,有或没有 XIB 文件。确保实例化 -initWithStyle:reuseIdentifier: 实例化 UITableViewCell 或 -initWithFrame: 实例化 UICollectionViewCell。然后,您可以将自定义类与 FirebaseTableViewDataSource 的实现挂钩。

于 2015-11-16T10:41:57.673 回答