Ich fange an, mit UITableViews zu arbeiten und kann nicht herausfinden, wie man die Position einer Zelle mit Code ändert. Das Ändern der Position im Storyboard ist einfach genug, aber ich muss es in swift machen können.Index einer Zelle ändern
Antwort
TLDR;
- Aktualisieren Sie Ihre Daten. d.h.
swap(&arr[2], &arr[3])
. - Rufen Sie die Methode
reloadData()
von tableView auf, um die Änderungen an Ihren Daten widerzuspiegeln.
Lange Antwort
Eine Instanz UITableView
Werke durch seine Datenquelle (UITableViewDataSource
) für die Informationen überprüft die es braucht. Dies umfasst die Anzahl der Abschnitte und Zeilen sowie die Instanz UITableViewCell
, die die Tabellenansicht verwenden soll. Diese werden durch die folgenden UITableViewDataSource
Delegatmethoden definiert:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int;
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int;
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell;
Normalerweise würden Sie die ersten beiden auf einige Daten stützen Sie haben, wahrscheinlich einem Array oder einem ähnlichen Behälter. - Zum Beispiel, wenn Ihre Tableview angezeigt Daten aus einem Array namens fruitArray
(die Namen der verschiedenen Früchte enthalten eine Liste von Strings), dann könnten Sie so etwas wie die folgenden haben:
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// Our array is one dimensional, so only need one section.
// If you have an array of arrays for example, you could set this using the number of elements of your child arrays
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// Number of fruits in our array
return fruitArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("yourCellId") // Set this in Interface Builder
cell.textLabel?.text = fruitArray[indexPath.row]
return cell
}
Dann können Sie sehen, dass die Antwort auf Ihre Frage wird einfach! Da der Inhalt einer bestimmten Zelle auf fruitArray
basiert, müssen Sie lediglich Ihr Array aktualisieren. Aber wie bringt man die TableView dazu, ihre dataSource "zu überprüfen"? Nun, Sie verwenden, um die reloadData
Methode, etwa so:
swap(&fruitArray[2], &fruitArray[3])
tableView.reloadData()
Dies ist dann die Tableview lösen zu „prüfen“ seine Datasource, damit Ihre Daten Swap verursacht auf dem Bildschirm erscheinen!
Wenn Sie den Benutzer möchten in der Lage sein, die Positionen der Zellen zu tauschen, können Sie die folgende UITableViewDelegate verwenden (nicht UITableViewDataSource
) Delegatmethode:
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool
Werfen Sie einen Blick auf this article für Mehr Info. Sie können auch die Dokumentation von Apple unter UITableView, UITableViewDataSource und UITableViewDelegate für weitere Details anzeigen.
Hoffe, das hilft!
Vielen Dank Jason, das war extrem gründlich und hilfreich! –
Bitte als akzeptierte Antwort markieren, wenn Sie glauben, dass dies Ihre Frage beantwortet hat. Vielen Dank! – Jason
- 1. Ändern Sie den Inhalt einer Zelle aus einer anderen Zelle
- 2. Setinterval Ändern der Farbe einer Zelle
- 3. Ändern der Daten einer Zelle in mysql
- 4. Wie das Innere Color einer bedingt formatiert Zelle ändern
- 5. Ändern der Einschränkung einer Bildansicht in einer Zelle programmgesteuert
- 6. Wert in einer benutzerdefinierten Zelle basierend auf Wert in einer anderen Zelle ändern
- 7. Bild in Datagridview Zelle ändern
- 8. Array-Index ändern
- 9. Ändern Sie die Farbe von Zelle zu Zelle in Excel
- 10. jqGrid: Wie Zelle ändern padding
- 11. ändern Zelle Fokus auf Tastendruck
- 12. Ändern der Tabelle Zelle Hintergrundfarbe
- 13. Ändern des Inhalts einer (Unterklasse) Zelle bei Ereignis
- 14. Wie ändern Sie den Stil der Zelle in einer JQuery.DataTable?
- 15. Ändern Sie UIImageView-Anzeige/Dimensionen in einer Tabellenansicht Zelle
- 16. Ändern bestimmter numerischer Werte in einer Excel-Zelle
- 17. Ändern der FlowDirection einer Zelle in Wpf DataGrid
- 18. Benutzerdefinierte Funktion zum Ändern der Farbe einer Zelle
- 19. Anfügen einer Zelle an eine fokussierte Zelle
- 20. In derselben Zelle aus einer anderen Zelle
- 21. C++: Zeichenkette durch Index ändern
- 22. ändern Index Ordner mit .htaccess
- 23. Dont Index in Jquery ändern
- 24. ändern ausgewählten Index mit Jquery
- 25. Aspose Formel mit einer Spalte Index ändern Problem
- 26. Ändern der Farbe eines bestimmten Index in einer Tabelle
- 27. Nach der Neuanordnung der Zelle ist hinter einer anderen Zelle
- 28. Wie kann ich die Schriftfarbe in einer Zelle einer WPF-ListView abhängig vom Wert der Zelle ändern?
- 29. Finding Index der Mitte sichtbar Zelle in UICollectionView
- 30. Farbe der Schaltfläche in DataGridView-Zelle ändern
Ich nehme an, Sie sprechen über die Änderung der Index/Reihenfolge der Zelle in der Tabellenansicht. Sie müssen die Reihenfolge der Daten der Zelle in der Datenquelle der Tabellenansicht ändern und dann 'tableview.reloadData() 'aufrufen. –