Ich versuche, eine benutzerdefinierte Tabellenansichtszelle aus einer Schreibfeder zu erstellen. Ich beziehe mich auf diesen Artikel hier . Ich stehe vor zwei Problemen.
Ich habe eine .xib-Datei mit einem darauf gezogenen UITableViewCell-Objekt erstellt. Ich habe eine Unterklasse von erstellt UITableViewCell
und sie als Klasse der Zelle und Zelle als wiederverwendbaren Bezeichner festgelegt.
import UIKit
class CustomOneCell: UITableViewCell {
@IBOutlet weak var middleLabel: UILabel!
@IBOutlet weak var leftLabel: UILabel!
@IBOutlet weak var rightLabel: UILabel!
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
Im UITableViewController habe ich diesen Code,
import UIKit
class ViewController: UITableViewController, UITableViewDataSource, UITableViewDelegate {
var items = ["Item 1", "Item2", "Item3", "Item4"]
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - UITableViewDataSource
override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let identifier = "Cell"
var cell: CustomOneCell! = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustomOneCell
if cell == nil {
tableView.registerNib(UINib(nibName: "CustomCellOne", bundle: nil), forCellReuseIdentifier: identifier)
cell = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustomOneCell
}
return cell
}
}
Dieser Code ist fehlerfrei, aber wenn ich ihn im Simulator ausführe, sieht er so aus.
Im UITableViewController im Storyboard habe ich nichts mit der Zelle gemacht. Leere Kennung und keine Unterklasse. Ich habe versucht, die Zellkennung zur Prototypzelle hinzuzufügen, und sie erneut ausgeführt, aber ich erhalte das gleiche Ergebnis.
Ein weiterer Fehler, mit dem ich konfrontiert war, war der Versuch, die folgende Methode im UITableViewController zu implementieren.
override func tableView(tableView: UITableView!, willDisplayCell cell: CustomOneCell!, forRowAtIndexPath indexPath: NSIndexPath!) {
cell.middleLabel.text = items[indexPath.row]
cell.leftLabel.text = items[indexPath.row]
cell.rightLabel.text = items[indexPath.row]
}
Wie in dem Artikel gezeigt, den ich erwähnt habe, habe ich die Typform des cell
Parameters geändert, UITableViewCell
in CustomOneCell
die meine Unterklasse von UITableViewCell ist. Aber ich bekomme folgenden Fehler:
Überschreibende Methode mit Selektor 'tableView: willDisplayCell: forRowAtIndexPath:' hat inkompatiblen Typ '(UITableView!, CustomOneCell!, NSIndexPath!) -> ()'
Hat jemand eine Idee, wie man diese Fehler behebt? Diese schienen in Objective-C gut zu funktionieren.
Danke dir.
BEARBEITEN: Mir ist gerade aufgefallen, dass die Zellen angezeigt werden, wenn ich die Ausrichtung des Simulators auf Querformat ändere und wieder auf Hochformat umstelle! Ich konnte immer noch nicht herausfinden, was los ist. Ich lud ein Xcode - Projekt hier demonstriert das Problem , wenn Sie Zeit für einen kurzen Blick.