Ist es sicher, direkt nach dem Instanziieren mit dequeueReusableCellWithIdentifier
auf einen Ausgang eines benutzerdefinierten UITableViewCell
zuzugreifen?Wird eine UITableViewCell und ihre Ausgänge nach `dequeueReusableCellWithIdentifier` initialisiert?
z.
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()
}
}
Ich habe diese Implementierung viel verwendet, aber sehr selten (< 0,001%) ich einen Crash-Bericht verweisen, erhalten myImageView.image = image
auszukleiden.
UPDATE: Bisher ist die Abstürze nur für eine bestimmte Implementierung beobachtet worden, wo ein Auslass zu vielen UIImageView()
in individuellen Zellen verbunden ist, weil sie die gleiche Klasse teilen.
Vielen Dank für das Aufzeigen, ich werde den Code aktualisieren. Wenn es jedoch für die Zelle nil zurückgibt, dann würde der Absturz wahrscheinlich in der Zeile 'cell.image = UIImage (...)' anstatt in 'myImageView.image = image' erfolgen. – Manuel
Mein Fehler, die Eigenschaft wird als optional deklariert, korrigiert den Tippfehler. – Manuel