2016-11-28 2 views
0

Ich verstehe nicht, warum meine App nicht kompiliert. Dies ist der aktuell ausgegebene Wert:Compile & Build-Fehler im Zusammenhang mit "Typ 'ViewController' entspricht nicht dem Protokoll 'UITableViewDataSource'"

+0

Alle Ihre Tableview Methoden falsch geschrieben/miscapitalized Wörter oder verwenden swift 2 Methodensignaturen, die in schnellen unterschiedlich sind 3 Verwenden Sie Xcode Autocomplete, um die richtigen Signaturen zu erhalten. – dan

+0

Welche Swift-Version redest du? Der Code ist ein Swift 2/3 Mixle-Mangle. – vadian

+0

Ich glaube, ich verwende Swift Version 3. Ich bin mir nicht sicher, wie man die Swift-Version bestimmt. –

Antwort

0

Sie fehlen, um einige Methoden anzugeben, die in den Protokollen deklariert sind, von denen Ihre Klasse abgeleitet ist.

Funktabelle (UITableView, ZelleForRowAt: IndexPath) Erforderlich. Fragt die Datenquelle nach einer Zelle ab, die an einer bestimmten Position der Tabellenansicht eingefügt werden soll.

Funktabelle (UITableView, numberOfRowsInSection: Int) Erforderlich. Weist die Datenquelle an, die Anzahl der Zeilen in einem bestimmten Abschnitt einer Tabellenansicht zurückzugeben.

Zumindest die beiden obigen Methoden müssen in Ihrer Klasse deklariert werden, sonst erhalten Sie den Fehler.

Dies sind nur die erforderlichen Methoden, aber für die korrekte Funktionsweise müssen Sie andere definieren. Siehe Apple-Dokumentation auf UITableViewDataSource Protokoll

+0

In dem Video, das ich mir angesehen habe, war der obige Code alles, was enthalten war und er konnte erfolgreich starten. Worin sollte der Code geändert werden, damit die App erfolgreich kompiliert werden kann? –

+0

Vielleicht wurde das Video für eine ältere iOS-Version gemacht ... schwer zu sagen. Implementieren Sie die Funktionen, die für die hinzuzufügenden Protokolle als erforderlich gekennzeichnet sind, und der Fehler sollte verschwinden. – Sergiob

0

In Swift 3 alle Methodensignaturen haben geändert:

func numberOfSections(in tableView: UITableView) -> Int { } 

func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { } 

func sectionIndexTitles(for tableView: UITableView) -> [String]? { } 

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { } 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {} 
Verwandte Themen