FirebaseUi - Swift - 将UITableViewCell的值转换为自定义类

时间:2015-11-16 09:04:54

标签: ios swift firebase firebaseui

使用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。

2 个答案:

答案 0 :(得分:4)

FirebaseUI开发人员:

如果您正在使用故事板/原型单元格,请使用包含prototypeReuseIdentifiercellReuseIdentifier的构造函数(请参阅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的实现。