![](/img/trans.png)
[英]Nil outlets with tableview dequeueReusableCellWithIdentifier
[英]Is a UITableViewCell and its outlets initialized after `dequeueReusableCellWithIdentifier`?
使用dequeueReusableCellWithIdentifier
实例化自定义UITableViewCell
的出口后,是否可以保存访问它?
例如
class MyCell: UITableViewCell {
@IBOutlet weak var myImageView: UIImageView!
var image: UIImage?
override func awakeFromNib() {
update()
}
func update() {
myImageView.image = image
}
}
class MyViewController: UIView() {
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("MyCellIdentifier") as! MyCell
cell.image = UIImage(...)
cell.update()
}
}
我已经使用了很多这种实现,但是很少(<0.001%)我收到崩溃报告,指向myImageView.image = image
。
更新:到目前为止,仅在一种特定的实现中观察到了崩溃,其中一个插座链接到自定义单元格中的许多UIImageView()
,因为它们共享同一类。
简单的方法dequeueReusableCellWithIdentifier:
返回一个不安全的可选方法。
请改用此方法,因为它返回一个非可选单元格,因此是安全的
let cell = tableView.dequeueReusableCellWithIdentifier("MyCellIdentifier",
forIndexPath: indexPath) as! MyCell
由于UIImageView
对象的image
属性可以为nil
因此建议将相关的UIImage
属性声明为可选( ?
),而不是在没有默认初始值设定项( ()
)的情况下隐式展开的可选( !
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.