Sto utilizzando un UITableViewController
per un tavolo nella mia app e ho aggiunto un NSFetchedResultsController
per fornire i dati da mostrare nella tabella (impostazione self
come delegato).Aggiungi riga aggiuntiva a UITableView gestito da NSFetchedResultsController
Tuttavia, vorrei aggiungere una cella univoca come ultima cella del tavolo, non correlata agli elementi prodotti dal predicato NSFetchedResultsController
, voglio che questa cella si trovi sempre nella parte inferiore della tabella.
Ho provato semplicemente aggiunti 1 a questi metodi nella tabella di vista origine dati:
- (NSUInteger)numberOfSectionsInTableView:(UITableView *)sender
{
return [[self.fetchedResultsController sections] count] + 1;
}
- (NSUInteger)tableView:(UITableView *)sender numberOfRowsInSection:(NSUInteger)section
{
return [[[self.fetchedResultsController sections] objectAtIndex:section] numberOfObjects] + 1;
}
E poi di prendere il caso in cui tale riga supplementare viene generato in questo modo (tabella ha solo 1 sezione) :
- (UITableViewCell *)tableView:(UITableView *)sender
cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == [self.fetchedResultsController.fetchedObjects count]) {
//Generate the last cell in table.
} else {
//Generate the rest of the cells like normal.
}
return nil; //To keep the compiler happy.
}
Questo controlla se l'indice è l'ultima cella e se ne occupa in modo appropriato.
Tuttavia ancora sto ottenendo il seguente errore in fase di esecuzione:
*** Terminating app due to uncaught exception 'NSRangeException',
reason: '*** -[__NSArrayM objectAtIndex:]: index 1 beyond bounds [0 .. 0]'
Qualche idea di cosa sta causando questo? O c'è un modo migliore di aggiungere una riga in più a una vista tabella controllata da un NSFetchedResultsController?
Ah sì, sarebbe davvero un modo molto migliore di implementarlo, grazie. (Evidentemente sono ancora molto nuovo alla programmazione iOS :-)) –
Sì, è stato molto hacky. Questa idea è tanto semplice quanto ...Molte grazie! – Shingoo
ma questo sembra - http://stackoverflow.com/questions/10965098/nsfetchedresultscontroller-prepend-a-row-or-sement –