Afficher une étiquette personnalisée lorsqu'aucune donnée n'est disponible pour tableView

À l'application en question a une possibilité pour les utilisateurs de marquer des éléments comme le favori. Lorsque l'utilisateur n'a pas de favoris enregistrés, je tiens à les informer de la réalité (surtout, je déteste l'idée d'un vide tableView).

Mon numberOfRowsInSection est de zéro lorsqu'il n'y a pas des éléments que l'utilisateur a marqué comme favori. J'aimerais ensemble de la cellule.textLabel.text = @"Vous n'avez pas de favoris", mais quand il n'y a pas d'articles pour la table cellForRowAtIndexPath n'est pas appelé.

J'ai pu tester numberOfRowsInSection pour donner un résultat lorsqu'il rencontre un 0 puis testez pour 1 ligne dans cellForRowAtIndexPath puis insérez le texte personnalisé mais alors que faire si ils ont un seul favori?

Mise à JOUR

J'ai essayé la mise en œuvre de l'idée que j'avais au-dessus, et a recommandé ci-dessous, mais peut-être que je ne suis pas en train de faire, probablement en raison du fait que c'est un fetchedResultsController avec le délégué méthodes pour mettre à jour la table quand un changement se produit.

J'obtiens cette erreur quand je supprime la cellule quand il n'y a qu'une seule cellule dans la table:

*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-1447.6.4/UITableView.m:976
Serious application error. An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:. Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (1) must be equal to the number of rows contained in that section before the update (1), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted). with userInfo (null)

et quand il n'y a pas que les cellules soient affichés en premier lieu, il se bloque avec:

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[_PFBatchFaultingArray objectAtIndex:]: index (0) beyond bounds (0)'

Voici le code correspondant:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    //Return the number of rows in the section.
    id <NSFetchedResultsSectionInfo> sectionInfo = [[_fetchedResultsController sections] objectAtIndex:section];

    if ([sectionInfo numberOfObjects]==0) {
        return 1;
    } else {
        return [sectionInfo numberOfObjects];
    }
} 

- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {

if ([[_fetchedResultsController sections] objectAtIndex:0]==0) {
    cell.textLabel.text = @"You have no favorites";
} else {
    Shows *show = [_fetchedResultsController objectAtIndexPath:indexPath];

    cell.textLabel.text = show.ShowsToSerials.serialName;
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", show.showTitle];
}
}

source d'informationauteur Michael Morrison