2017-09-18 25 views
-1

Ich habe zwei benutzerdefinierte UITableViewCell und ich wollte durchlaufen die Zellen, die derzeit auf meinem tableView, wenn der Benutzer auf die Schaltfläche done antippen. Ich verwendete die tableView.visibleCells Methode, um durch meine tableView Schleife. Hier ist mein Code:Wie Sie überprüfen und Namespace eingeben

func doneButtonTapped() { 
    // TODO: - Need to collect user's input.... 

    guard let node = node else { 
     return 
    } 

    var dict: Dictionary<String, Double> 

    let calculator = Calculator(module: node.value) // make it a failable initializer, so when user taps done without populating the inputs, it prompts them to 

    for cells in tableView.visibleCells { 
     if cells is NumericInputTableViewCell { 
      print("numeric cell") 
      // TODO: - Append to dictionary 

      cells. //Error 

     } else if cells is BooleanInputTableViewCell { 
      print("boolean cell") 
      //TODO: - Append to dictionary 

     cells. //Error 

     } 
    } 
} 

Während, wenn ich Schleife durch die Zellen, überprüfe ich und meine Logik-Code trennen, je nachdem ob für-Schleife eine NumericInputTableViewCell oder eine BooleanInputTableViewCell in der if-else-Anweisung gefunden. Als ich versuchte, auf den Namespace der Zellen zuzugreifen, bekam ich einen Fehler und xcode konnte für mich nicht automatisch vervollständigen. Ich sollte cells in der if-Anweisung verwenden können, um auf diese benutzerdefinierten Zellen zuzugreifen. Allerdings konnte ich nicht. Was mache ich falsch? Vielen Dank!

UPDATE

The error I got is "User of unresolved identifier 'cell'"

In meiner benutzerdefinierten Zellen, bekam ich eine Eigenschaft namens numericTitleLabel und wenn ich, dass für den Zugriff versucht, es gab mir diesen Fehler.

+1

Was ist der Fehler? Du kannst nicht einfach 'Zellen' haben. Bitte klären Sie. – rmaddy

+0

Nur weil Xcode für Sie nicht automatisch vervollständigt wird, bedeutet das nicht, dass Ihr Code ungültig ist. – Sweeper

+0

danke, siehe Update –

Antwort

0

if cell is prüft, ob Zelle einige Klasse, wenn Sie Eigenschaften zugreifen möchten, sollten Sie Ihren visibleCell gegossen, die UITableViewCell

tableView.visibleCells.forEach ({ cell in 
    if let numbericCell = cell as? NumericInputTableViewCell { 
     print("numeric cell") 
     // TODO: - Append to dictionary 

     numbericCell.. 

    } else if let booleanCell = cell as? BooleanInputTableViewCell { 
     print("boolean cell") 
     //TODO: - Append to dictionary 

     booleanCell... 
    } 
}) 
+0

Schön! das hat funktioniert! Vielen Dank! –

0

ist es seltsam scheint, dass Sie bei visibleCells zu sehen suchen, welche Art Elemente sein werden repräsentiert.

Ich empfehle die Verwendung der indexPathsForVisibleRows und die Verwendung der zurückgegebenen Indexpfade, um Ihre Datenquelle abzufragen, um herauszufinden, was angezeigt wird.

+0

Ich merke nur die Funktion 'visibleCells' gibt Ihnen nur die Zelle, die tatsächlich sichtbar sind. –

Verwandte Themen