Se si utilizzano TableViewCells personalizzati, il generico
[self.tableView reloadData];
non risponde efficacemente a questa domanda a meno che non abbandoni la vista corrente e torni indietro. Nemmeno la prima risposta.
Per ricaricare correttamente la prima cella della vista tabella senza cambiare vista , utilizzare il codice seguente:
//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];
}
Inserisci il seguente metodo di aggiornamento che chiama il metodo sopra in modo da poter ricaricare in modo personalizzato solo la cella superiore (o l'intera vista della tabella, se lo desideri):
- (void)refresh:(UIRefreshControl *)refreshControl {
//call to the method which will perform the function
[self reloadTopCell];
//finish refreshing
[refreshControl endRefreshing];
}
Ora che l'hai ordinato, all'interno del tuo viewDidLoad
aggiungi quanto segue:
//refresh table view
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
[self.tableView addSubview:refreshControl];
Ora hai una funzione di tabella di aggiornamento personalizzata che ricaricherà la cella superiore. Per ricaricare l'intera tabella, aggiungi il
[self.tableView reloadData];
al tuo nuovo metodo di aggiornamento.
Se desideri ricaricare i dati ogni volta che cambi visualizzazione, implementa il metodo:
//ensure that it reloads the table view data when switching to this view
- (void) viewWillAppear:(BOOL)animated {
[self.tableView reloadData];
}
[NSArray arrayWithObject:]
invece.