使用UITableViewCell
实例化后,是否可以保存以访问自定义dequeueReusableCellWithIdentifier
的插座?
E.g。
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
的崩溃报告。
更新
到目前为止,仅针对一个特定实现观察到崩溃,其中1个出口链接到自定义单元格中的许多UIImageView()
,因为它们共享相同的类。
答案 0 :(得分:2)
简单方法dequeueReusableCellWithIdentifier:
返回一个不安全的可选方法。
使用此方法,这是安全的,因为它返回一个非可选的单元格
let cell = tableView.dequeueReusableCellWithIdentifier("MyCellIdentifier",
forIndexPath: indexPath) as! MyCell
由于image
对象的UIImageView
属性可以是nil
,因此建议将相关的UIImage
属性声明为可选(?
)而不是隐式展开没有默认初始值设定项(!
)
()
)