outlet 什么时候绑定(bind)到 UITableViewCell 实例?如果我在调试器中打印 myLabel,它为 nil 并打印:
fatal error :在展开可选值时意外发现 nil
class MyTableViewCell: UITableViewCell {
@IBOutlet var myLabel: UILabel!
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
print("\(myLabel)")
}
}
最佳答案
调用 tableview 单元格的 init 方法时尚未设置 socket !
我不确定你的意图是什么:
如果你想确保你没有解包一个 nil 可选值,只需像这样使用
if let
:if let label = myLabel { print("\(label)") }
如果您想设置 tableView 的单元格,您应该首先通过调用
tableView.registerNib(UINib(nibName: "MyTableViewCell", bundle: nil), forCellReuseIdentifier: "reuse"来注册单元格)
。然后使用tableView.dequeueReusableCellWithIdentifier("reuse")
使cellForRowAtIndexPath
中的单元格出队,并确保在awakeFromNib
中设置单元格的值:override func awakeFromNib() { super.awakeFromNib() //you can be sure that myLabel is initialzed here print("\(myLabel)") }
关于ios - UITableViewCell socket ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36291746/