Wenn Sie benutzerdefinierte TableViewCells verwenden, wird die generische
[self.tableView reloadData];
beantwortet diese Frage nur dann effektiv, wenn Sie die aktuelle Ansicht verlassen und zurückkehren. Die erste Antwort auch nicht.
Verwenden Sie den folgenden Code, um Ihre erste Tabellenansichtszelle erfolgreich neu zu laden, ohne die Ansicht zu wechseln :
//For iOS 5 and later
- (void)reloadTopCell {
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
NSArray *indexPaths = [[NSArray alloc] initWithObjects:indexPath, nil];
[self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone];
}
Fügen Sie die folgende Aktualisierungsmethode ein, die die obige Methode aufruft, damit Sie nur die oberste Zelle (oder die gesamte Tabellenansicht, falls gewünscht) neu laden können:
- (void)refresh:(UIRefreshControl *)refreshControl {
//call to the method which will perform the function
[self reloadTopCell];
//finish refreshing
[refreshControl endRefreshing];
}
Nachdem Sie dies sortiert haben, viewDidLoad
fügen Sie in Ihrem Bereich Folgendes hinzu:
//refresh table view
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
[self.tableView addSubview:refreshControl];
Sie haben jetzt eine benutzerdefinierte Funktion zum Aktualisieren von Tabellen, mit der die oberste Zelle neu geladen wird. Fügen Sie zum erneuten Laden der gesamten Tabelle die hinzu
[self.tableView reloadData];
zu Ihrer neuen Aktualisierungsmethode.
Wenn Sie die Daten bei jedem Ansichtswechsel neu laden möchten, implementieren Sie die folgende Methode:
//ensure that it reloads the table view data when switching to this view
- (void) viewWillAppear:(BOOL)animated {
[self.tableView reloadData];
}
[NSArray arrayWithObject:]
stattdessen verwenden wollen.