Ich kann nicht herausfinden, warum diese benutzerdefinierte Zelle nicht ausgegeben wird.
Swift: IBoutlets sind Null in benutzerdefinierte Zelle
Ich habe eine benutzerdefinierte Zelle in einem Storyboard (keine Feder) eingerichtet. Ich habe ein Textfeld und 2 Etiketten, die Null sind, wenn ich versuche, auf sie in der benutzerdefinierten Zellklasse zuzugreifen. Ich bin mir fast sicher, dass ich alles richtig angeschlossen habe, aber immer noch Null.
Ich habe meine Tabellenzelle im Storyboard ausgewählt und eingestellt benutzerdefinierte Klasse TimesheetTableViewCell
Ich habe die Kontrolle auch auf dem Tisch angeklickt und stellen Sie die Datenquelle und Delegierter TimesheetViewController
Meine benutzerdefinierte Zelle Klasse sein:
import UIKit
class TimesheetTableViewCell: UITableViewCell {
@IBOutlet var duration: UITextField!
@IBOutlet var taskName: UILabel!
@IBOutlet var taskNotes: UILabel!
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init?(style: UITableViewCellStyle, reuseIdentifier: String!) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
println("Cell's initialised")// I see this
println(reuseIdentifier)// prints TimesheetCell
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
func setCell(duration: String, taskName: String, taskNotes: String){
println("setCell called")
self.duration?.text = duration
self.taskName?.text = taskName
self.taskNotes?.text = taskNotes
}
Mein Controller:
class TimesheetViewController: UIViewController, UITableViewDataSource, UITableViewDelegate{
@IBOutlet var timesheetTable: UITableView!
var items = ["Item 1", "Item2", "Item3", "Item4"]
override func viewDidLoad() {
super.viewDidLoad()
self.timesheetTable.registerClass(TimesheetTableViewCell.self, forCellReuseIdentifier: "TimesheetCell")
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("TimesheetCell", forIndexPath: indexPath) as TimesheetTableViewCell
println(items[indexPath.row]) // prints corresponding item
println(cell.duration?.text) // prints nil
cell.setCell(items[indexPath.row], taskName: items[indexPath.row], taskNotes: items[indexPath.row])
return cell
}
anstelle von 'self.timesheetTable.registerClass (...)': benutze 'self.timesheetTable.registerNib (...)', vielleicht ...? – holex