Ich verwende Xcode 7.0, Swift 2cellForRowAtIndexPath nicht von benutzerdefinierten Klasse aufgerufen wird
Ich versuche im Grunde eine benutzerdefinierte Klasse zu erstellen, die eine UITable
, dann in der ViewController
bauen werde ich ein neues Objekt machen von den Tisch und laden Sie es in self.view;
Das Problem, das ich habe, ist, dass die Funktion func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
ist gar nicht von innerhalb der benutzerdefinierten Klasse aufgerufen wird. Ich habe jetzt für 3 Tage nach einer Lösung gesucht, und ich habe versucht, ohne Glück der App und Code mehrmals neu zu erstellen.
Bitte beachten Sie, wenn ich den gleichen Code verwenden (das alles, um die Tabelle erstellen erforderlich ist, ohne init-Funktionen, usw.) in der ViewController.swift Datei, es funktioniert gut.
Ich weiß, dass das Problem mit der cellForRowAtIndexPath
Funktion ist, weil es die Anweisung nicht ausdruckt, die ich in diesem Block des Codes einstelle, wenn es ausgeführt wird. Alle anderen Funktionen werden aufgerufen, aber aus irgendeinem Grund wird dies nicht aufgerufen. Ich bin mir nicht sicher, ob ich hier etwas übersehen habe. Jede Hilfe wäre willkommen. Danke im Voraus.
class sideTest: NSObject, UITableViewDelegate, UITableViewDataSource {
let tesTable: UITableView = UITableView()
var items: [String]?
var mView: UIView = UIView()
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print("The number of rows is: \(self.items!.count)")
return self.items!.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
print("\nLets create some cells.")
let sCell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell!
sCell.textLabel?.text = self.items![indexPath.row]
sCell.textLabel?.textColor = UIColor.darkTextColor()
return sCell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("You selected cell #\(indexPath.row)!")
}
func tblSetup() {
self.tesTable.frame = CGRectMake(0, 0, 320, mView.bounds.height)
self.tesTable.delegate = self
self.tesTable.dataSource = self
self.tesTable.backgroundColor = UIColor.cyanColor()
// load cells
self.tesTable.registerClass(UITableViewCell.self, forCellReuseIdentifier: "Cell")
self.tesTable.reloadData()
print("Currenlty in tblSetup.\nCurrent rows is: \(self.items!.count)")
}
//Init
override init() {
super.init()
self.items = nil
self.tblSetup()
}
init(sourceView: UIView , itemListAsArrayString: [String]) {
super.init()
self.items = itemListAsArrayString
self.mView = sourceView
self.tblSetup()
}
}
Hier ist der Code von ViewController.swift; Bitte beachten Sie, dass die Tabelle erstellt wird, aber die Zellen besiedeln nicht, auch wenn ich Zelleninformationen manuell eingeben, indem Sie: sCell.textLabel?.text = "test cell"
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let myTable: sideTest = sideTest(sourceView: self.view, itemListAsArrayString: ["Cell 1", "Cell 2", "Cell 3"])
self.view.addSubview(myTable.tesTable)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
Auch hier ist jede Hilfe sehr dankbar. Vielen Dank.
Sie sollten auf jeden Fall die bestimmte Initialisierung von 'UITableView' verwenden, die' init (frame Rahmen: CGRect, Stil Stil: UITableViewStyle) 'aber ich bin nicht sicher, dass dies den Unterschied machen wird. – Sulthan
Ist Ihre Klasse als Datenquelle der Tabellenansicht festgelegt? – quellish