Wie würde ich eine reloadData-Nachricht von einer benutzerdefinierten TableViewCell an die tableView senden?senden Reload-Daten von benutzerdefinierten Tabellenansicht Zelle?
Antwort
Der einfachste Weg, dies zu implementieren, ist die Verwendung von Delegaten.
definieren ein Protokoll in Ihrem CustomTableCell.h wie folgt aus:
@protocol CustomTableCellDelegate <NSObject>
@required
- (void)reloadMyTable;
@end
Der nächste Schritt ist ein Delegat var zur Verfügung zu stellen:
@interface CustomTableCell : UITableViewCell {
id<CustomTableCellDelegate> delegate;
}
@property (assign) id<CustomTableCellDelegate> delegate;
Make shure Sie synthetisieren Ihre Stellvertretung-Variable in der CustomTableCell .m.
Jetzt haben Sie einen Delegierten definiert. Es gibt drei verbleibenden Schritte:
Wenn Sie Ihr Handy erstellen Sie haben für diese Zelle den Delegierten setzen wie
cell.delegate = self;
Make shure Ihre Tableviewcontroller Ihre CustomTableCellDelegate implementiert. Wenn Sie dies tun, werden Sie das implementieren gezwungen - (void) reloadMyTable in Ihrem Tableviewcontroller:
- (void)reloadMyTable {
[self.tableView reloadData];
}
Der letzte Schritt ist diese Methode von Ihrem CustomTableCell so zu nennen:
if (self.delegate != NULL && [self.delegate respondsToSelector:@selector(reloadMyTable)]) {
[delegate reloadMyTable];
}
Mehr über Delegation here.
Kurz gesagt: Sie definieren ein Protokoll in Ihrer CustomTableViewCell, die vom TableViewController implementiert wird. Wenn Sie eine Methodennachricht an Ihre Stellvertretung senden, wird diese Nachricht an Ihren TableViewController gesendet.
Der beste Weg, um Benachrichtigungen zu erstellen. In Ihrem TableView müssen Sie es erstellen. Es ist sehr einfach, so etwas wie dieses:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reloadTableView:)
name:@"reloadTable"
object:nil];
Dann müssen Sie create-Methode:
- (void)reloadTableView:(NSNotification *)notif {
[self.yourTableName reloadData];
}
und vergessen Sie nicht Benachrichtigung löschen:
-(void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"reloadTable" object:nil];
}
und in yo Ihr benutzerdefiniertes tableViewCell, wenn Sie die Tabelle neu laden möchten, benötigen Sie:
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadTable"
object:nil];
Elegant und weniger Code als die Delegates-Lösung. +1 – user623396
Ich würde das nicht den besten Weg nennen, viel lieber Delegation. – tagy22
- 1. Einbetten Sammlung in benutzerdefinierten Tabellenansicht Zelle
- 2. Tabellenansicht Zelle Daten laden
- 3. Schaltfläche in der Tabellenansicht Zelle
- 4. Sammlungsansicht innerhalb der Tabellenansicht Zelle
- 5. Tabellenansicht mit benutzerdefinierter Zelle (programmgesteuert)
- 6. Erweitern und reduzieren Tabellenansicht Zelle
- 7. Check-Zeichen auf Tabellenansicht Zelle
- 8. Tabellenansicht Zelle Auswahl in iPhone
- 9. Abrufen von Text aus dem Textfeld in der Tabellenansicht Zelle
- 10. Neue Tabellenansicht-Zelle wird als leere Zelle angezeigt
- 11. Navigationsleiste wird die erste Tabellenansicht Zelle
- 12. Benutzerdefinierte Tabellenansicht Zelle in Swift, ohne Storyboard
- 13. prepareForSegue Senden von Daten an die Tabellenansicht in einer Containeransicht
- 14. iOS Auto-Layout: Dynamische Höhe für Tabellenansicht Zelle
- 15. Swift customize Tabellenansicht Zelle ungelöst Kennung
- 16. swift, wie Tabellenansicht Zelle haben dynamische Höhe
- 17. Zugriff auf die Zelle in der Tabellenansicht?
- 18. Tabellenansicht neu laden Mit Ausnahme einer Zelle
- 19. Tabellenansicht Zelle mit Parse Swift löschen
- 20. Swift MPGTextField Autocomplete in Tabellenansicht Zelle
- 21. Rechtes Detail zur Tabellenansicht hinzufügen Zelle
- 22. Schnell. Ändern der Farbe der benutzerdefinierten Tabellenansicht Zellenbezeichnung, wenn ausgewählt
- 23. Hinzufügen von Objekten zu benutzerdefinierten wiederverwendbaren Zelle
- 24. jqGrid - Einfügen von benutzerdefinierten HTML in Zelle
- 25. So verwenden Sie die VFL-Einschränkung zur benutzerdefinierten Zelle in der Tabellenansicht
- 26. Wie kann ich das Array von Wörterbüchern von einer Tabellenansicht zu einer anderen benutzerdefinierten Tabellenansicht in Swift
- 27. Benutzerdefinierte Tabellenansicht Zelle mit Swift in Xcode 6
- 28. Swift - Lesen über Zelle Wert in der Tabellenansicht
- 29. Aus Warteschlange mit Schaltfläche in der Tabellenansicht Zelle
- 30. Speichern Sie Tabellenansicht Textfelder zu einem Array von benutzerdefinierten Objekten
Bisher ist das einzige, was ich nicht klar ist, wo Sie sagen: Stellen Sie sicher, dass Sie tableviewcontroller Ihren benutzerdefinierten Tischzellen-Delegaten implementiert. – Brodie
ignoriere ich habe es, danke – Brodie
@audience. Wo kann ich den Code des letzten Schrittes eingeben? Ich meine, in welcher Methode sollte es anrufen –