2017-07-12 4 views
0

Ich habe eine TabelleView, wo ein Benutzer eine Zeile auswählt und ein Häkchen erscheint, werden diese Zeilen in ein Array gelegt. Wenn das TableView geladen wird, wähle ich bestimmte Zeilen aus. Hier ist, was ich gefunden und versucht, aber es hat nicht funktioniert:Wählen Sie eine bestimmte Zeile auf load swift tableView

let rowToSelect:NSIndexPath = NSIndexPath(row: 1, section: 0); 

self.userTableView.selectRow(at: rowToSelect as IndexPath, animated: true, scrollPosition: .none) 
+0

Was genau meinen Sie mit "bestimmte Zeilen auswählen"? Sie möchten das Häkchen für die zuvor ausgewählten Zeilen markieren? – valcanaia

+0

Ich denke, die Zeile wird ausgewählt, aber Sie müssen die Tabellenansicht in die neu ausgewählte Zeile scrollen, indem Sie etwas anderes als '.none' übergeben. Überprüfen Sie: https://developer.apple.com/documentation/uikit/uitableviewcrollposition –

+0

@valcanaia, Ja, ich habe alle Indizes in einer globalen Variable gespeichert, ich möchte nur eine Zellenauswahl hart Code, wenn das Sinn macht –

Antwort

1

Ich glaube, dass Sie wollen „überprüfen“ das Häkchen für die ausgewählten Indizes, die Sie in irgendeiner Variable haben. Wenn das ist, was Sie wollen, können Sie dies wie in Ihrem tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell Methode tun:

myCell.checked = checkedIndexes[indexPath.row] ?? false 

Ich bin der Annahme, Sie eine benutzerdefinierte Zelle mit einer checked: Bool Variable so, wenn Sie den Wert in Ihrer checkedIndexes Variable haben Sie es einrichten, Ansonsten setzen Sie false.

WARNUNG: Der Wert false ist wegen der Wiederverwendung von Zellen wichtig.

Dies ist nur ein Vorschlag, Sie können es tun, wie Sie es mögen.

Die selectRow(at indexPath: IndexPath?, animated: Bool, scrollPosition: UITableViewScrollPosition) Methode ist nur die Zeile auswählen, es führt keine Aktion mit Logik verwandt. Damit dies funktioniert, müssten Sie tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) aus dem UITableViewDelegate mit dem vor dem myCell.checked = checkedIndexes[indexPath.row] ?? false vorgeschlagenen Code implementieren.

Verwandte Themen