Ich glaube, ich etwas von grundlegender Bedeutung für Swift bin fehlt, kann aber nicht andere Beispiele von Menschen finden zu tun, was ich versuche:cellForRowAt - Erstellen und Zellrück aus switch-Anweisung
Hintergrund
Ich habe eine UITableView mit 2 Prototyp-Zellen, mit einem anderen identifiziert, verschiedene Funktionen (Label, Bild usw.) und verschiedene Klassen.
Ich möchte, dass die CellForRowAt-Funktion einen anderen Typ und eine andere Zelle zurückgibt, abhängig vom Inhalt des Arrays, das die Tabellendaten enthält. Dieses Array ist mit Strukturinstanzen gefüllt, von denen ein Merkmal den Typ der Zelle identifiziert, die ich die Daten darstellen möchte.
-Code Versuch
Dies ist keine wortgetreue Kopieren/Einfügen, aber das Prinzip ist das gleiche
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch dataArray[indexPath.item].typeOfData {
case "Type1":
let cell = tableView.dequeueReusableCell(withIdentifier: "type1ReuseIdentifier", for: indexPath) as! type1Cell
//Set up the cell contents
return cell
case "Type2":
let cell = tableView.dequeueReusableCell(withIdentifier: "type2ReuseIdentifier", for: indexPath) as! type2Cell
//Set up the cell contents
return cell
default
let cell = tableView.dequeueReusableCell(withIdentifier: "separatorIdentifier", for: indexPath) as! separatorCell
//Set up the cell contents
return cell
}
}
Das Problem ist, das nicht funktioniert, Swift will mich und erklären, gebe die Zelle außerhalb der switch-Anweisung zurück, kann dies jedoch nicht tun, da die Deklaration des Zelltyps vom Typ der Daten abhängt, die ich erstellen möchte (da! typexCell für den Zugriff auf die Komponenten der benutzerdefinierten Zellen benötigt wird).
Was vermisse ich/mache ich falsch?
Haben Sie geschrieben 'default' Fall zurückkehren? – iPeter
Vergleichen Sie [Fehlende Rückkehr UITableViewCell] (https://stackoverflow.com/questions/30189505/missing-return-guidableviewcell). –
Entschuldigung, ja, die Standardanweisung ist auch da und gibt eine Trennzeichenzelle zurück – KnowledgeQuest