Je charge un contenu dans UitailView de manière dynamique. S'il y a des données, le tableau doit afficher les données. S'il n'y a pas de données, la table doit afficher une page simple. Mais dans mon application, la table affiche la page simple avec deux lignes de séparateur. Je dois supprimer cette ligne de séparateur et afficher une page blanche latalité. S'il vous plaît suggérer? P>
Toute aide serait appréciée! P>
6 Réponses :
Vous pouvez vérifier le cas vide si votre DataSource est vide, ajoutez une vue d'espace réservé en haut de la tableView. S'ils ne sont pas vides, retirez la vue de l'espace réservé. P>
Cela ressemble à un piratage laids pour moi et des hacks laids ont tendance à briser de la vraie fonctionnalité sur la route.
Je crois que vice-versa: il devrait y avoir "quelque chose" pour expliquer l'utilisateur que l'application fonctionne comme prévu, elle n'a pas écrasé, il a déjà fini ce qu'il faisait et - surtout - cet espace est vide exprès, mais seulement pour l'instant .
Je ne vois pas pourquoi il s'agit d'un piratage laid, c'est juste un moyen d'afficher une vue personnalisée pendant qu'il n'y a pas de données. La vue personnalisée peut expliquer pourquoi il n'y a pas de données et comment l'utilisateur peut entrer des données. C'est une pratique courante dans les applications iPhone (et Mac).
Un clair Je suppose que vous ne voyez que deux lignes de séparateur car vos rangées sont très hautes? p>
Si vous faites vraiment strud> besoin de supprimer les lignes de séparateur, définissez la propriété utableview code> affichera toujours des lignes de séparateur même s'il est vide. Vous remarquerez peut-être que si vous avez une liste avec seulement une ou deux lignes, il existe toujours des lignes de séparateur visibles. Ceci est le comportement par défaut et ne devrait pas être remplacé à moins que vous ayez une bonne raison forte> vraiment forte>. P>
SéparatorStyle CODE> de la vue de votre table sur UitailViewCellseparatorStylenone code>. Notez que cela affectera toutes les lignes. Donc, si vous voulez toujours des séparateurs pour les lignes qui existent, vous devez tirer ces lignes de séparateur dans votre propre utailviewcell code> objets. P>
Si vous fournissez une vue sur le pied de page, les séparateurs entre les rangées vides disparaîtront.
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)]; myTableView.tableFooterView = view;
Notez que TABLEFOOTERVIEW CODE> est une propriété conservée, donc affichage code> devrait être (auto) publié.
Fonctionne parfaitement. Ne pouvait pas être plus simple.
Aussi juste pour ajouter, vous n'avez pas besoin de définir le cadre ici. MyTableView.TablefoTerView = [[UIView Alloc] init]; code> est assez bon.
Cela peut être plus simple! :) [Self.TableView SetTableFooTerview: [UIView NEW]]; B> Aussi, pourquoi en feriez-vous un pixel élevé? Si (pour une raison quelconque), vous voulez le faire, le «long» chemin juste le faire 0,0,0,0
Deux étapes:
Ajouter ce code dans ViewDiDload P>
- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
// The fetch controller has sent all current change notifications, so tell the table view to process all updates.
if (self.fetchedResultsController.fetchedObjects.count > 0)
emptyplaceholder.hidden = YES;
else
emptyplaceholder.hidden = NO;
[self.tableView endUpdates];
}
Désolé, mon modèle est un contrôleur de TableView avec les mêmes informations de date. Donc, les mots doivent être: lorsque le support d'endroit, Uilabel caché lorsque la vue table a une "vraie" cellule de vue de table.
Il peut être simplifié à une seule ligne, à l'aide de la solution @bbarnhart:
La bonne conception UI pour ajouter un nouvel uIView à l'UIViewController quand il n'y a pas de données "Aucune donnée disponible", en ajoutant qu'il masquera des lignes de séparation de l'UitailView P>
c'est aussi facile ... [Self.TableView SettableFooTerview: [UIView NEW]];
Notez que la solution réelle est simplement pour la définir comme une table de style "groupée" b>! Pour ce faire, allez simplement à Thomas Decaux 'Répondre ici: Stackoverflow.com/Questtions/1006663/...