2016-03-26 7 views
2

Unten ist der Code für meine TableView, ich habe einen Fehler in der CellForRowAtIndexPath Funktionsdeklaration, die Definition Konflikte mit vorherigen Wert sagt. Eine vorherige Stapelüberlauffrage hat die Lösung, die Funktion UITableViewCell als optionalen Wert zurückzugeben, aber das behebt den Fehler für mich nicht. Ich habe auch einen Fehler, der besagt, dass ViewController nicht mit dem Protokoll UITableViewDataSource konform ist, aber ich nehme an, dies liegt an dem Fehler der cellForRowAtIndexPath-Methode.Swift cellForRowAtIndexPath Definition Konflikte mit vorherigen Wert

Ich habe ähnlichen Code für eine Tabelle, die funktioniert, aber es wurde vor etwa einem Monat geschrieben, bevor ich Xcode aktualisierte. Vielleicht verursacht eine kürzliche Änderung in Swift den Fehler?

func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int 
    { 

     return 1 

    } 


    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell? { 

     let cellIdentifier = "tableViewCell" 

     let newCell : TableViewCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as! TableViewCell 


     newCell.heading.text = names[indexPath.row] 

     return newCell 


    } 
+0

der realen Problem ist, dass die von Ihnen definierte Funktion UITableViewCell zurückgibt? und es sollte UITableViewCell zurückgeben. Entferne das ? vom Rückgabetyp. – ryantxr

+0

Yea ich versuchte mit und ohne? aber bekam immer noch Fehler – ray

+0

Ohne? ist definitiv der richtige Weg. – ryantxr

Antwort

2

Versuchen Sie, Ihre Datenquelle Methoden in einer Klasse Erweiterung wie folgt platzieren:

extension yourViewController: UITableViewDataSource { 
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { // cellForRow stuff 
    } 

} 
+0

FYI, das ist ein bisschen ein Hack, keine Lösung für das Problem. – PeejWeej

0

Wenn dies in einem UITableViewController ist, müssen Sie Überschreibung der Methode hinzuzufügen:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
+0

Ich benutze einen normalen View-Controller und keinen UITableViewController, also glaube ich nicht, dass das funktioniert. – ray

+0

Ist es eine Unterklasse von UIViewController? Oder einer deiner eigenen Klassen? – PeejWeej

+0

Der gesamte Code, den ich in der Frage geschrieben habe, befindet sich in einer benutzerdefinierten Klasse namens ViewController, die eine Unterklasse von UIViewController ist. Als ich Ihren Vorschlag ausprobierte, heißt es, dass Überschreibung nur für Klassenmitglieder angegeben werden kann – ray

Verwandte Themen