Comment masquer une section dans UITableView?
Il y a quelques section dans la table qui ne contient pas toutes les données et souhaitez masquer cette section.
Comment faire?
Vous devez vous connecter pour publier un commentaire.
Il y a quelques section dans la table qui ne contient pas toutes les données et souhaitez masquer cette section.
Comment faire?
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas "cacher" un article en tant que tel, mais vous pouvez "supprimer" à partir de l'affichage de la table à l'aide de la
deleteSections:withRowAnimation:
méthode. Ce sera l'enlever de la vue, avec une option d'animation, sans affecter vos données de sauvegarde. (Cependant, vous devez le mettre à jour les données de toute façon, de sorte que la section ne réapparaît pas.)Plus d'infos: UITableView de référence de classe
[self.tableView deleteSections:[NSIndexSet indexSetWithIndex:2] withRowAnimation:nil];
mais je reçois ce message: "mise à jour incorrecte: non valides nombre de sections. Le nombre d'articles contenus dans la vue de table après la mise à jour (3) doit être égal au nombre d'articles contenus dans la vue de table avant la mise à jour (3), plus ou moins le nombre d'articles insérés ou supprimés (0 inséré, 1 supprimés).' Une idée?-numberOfSectionsInTableView:
source de données de la méthode. L'erreur indique que vous commencez avec trois sections, d'en supprimer un, pour ensuite prétendre que vous avez encore trois sections à gauche.Effectivement, on peut "cacher" une section. Si vous souhaitez utiliser un comportement similaire à l'application de contacts intégrée, où les sections sont masqués, mais toujours répertoriés dans l'index sur la droite, vous pouvez effectuer les opérations suivantes:
Mettre en œuvre les
UITableViewDataSource
protocole:Le retour de tous les noms de section (même cachés) dans le
sectionIndexTitlesForTableView
méthode.Pour chaque section vide, retour
nil
de latitleForHeaderInSection
méthode.Pour chaque section vide de retour
0
pour lanumberOfRowsInSection
méthode.Je trouve que cela fonctionne mieux que la suppression de sections, parce que l'utilisateur est conforme indice de navigation.
Il est vrai que 0 n'est pas valide hauteur pour les en-têtes et pieds de page. Cependant, les hauteurs sont CGFloat valeurs. Vous pouvez spécifier un très petit nombre (j'ai utilisé 0.1) pour la hauteur de la section en-têtes et pieds de page.
Genre de hack, mais il fonctionne.
Je suis en désaccord avec Tim. Nous avons un moyen d'accéder à la section/ligne d'une table à partir de n'importe où dans notre code et de modifier son .caché de la propriété (et toutes les autres propriétés).
C'est la façon dont j'ai l'habitude d'utiliser:
Vous pouvez définir le nombre de lignes dans une section de 0. Cependant, il va laisser une notable zone vide où il l'habitude d'être.
Vous pouvez également retourner le nombre d'enregistrements qui contiennent des données à partir de la
numberofSectionsInTableView:
méthode et utiliser un
switch(indexPath.section)
lorsque vous laissez le vide des dossiers de l'automne à travers " le commutateur suivant, comme:
J'ai eu du mal avec ça pendant un moment parce que j'ai dû laisser de côté les articles dans le milieu d'un groupe de table. Essayé avec réglage de la cellule, de l'en - tête et pied de page les hauteurs de 0.0 mais cela ne fonctionne pas. Ne pouvait pas juste supprimer certaines sections en raison de l'appelées méthodes en fonction de la ligne sélectionnée. Cela allait être un énorme if..else if...else if avec plusieurs appels de sous-routines.
Heureux, j'ai pensé à la bonne vieille méthode de commutateur, peut-être qu'il vous aide ainsi 🙂
Vous avez probablement besoin de supprimer la section elle-même à partir des données de la sauvegarde de votre table. Je ne pense pas qu'il y ait quelque chose qui vous permet de simplement masquer une section.
Vous pouvez définir la section lignes de la hauteur à 0. Aussi, avec l'en-tête de section si vous le souhaitez. Source de données seraient encore là, seulement ne s'affiche pas.
Section Lignes
Si vous retourner la valeur 0 pour la hauteur de la section, Pomme d'API va l'ignorer. Donc, juste de retour d'une petite valeur supérieure à 0.
Également de mettre en œuvre la vue d'en-tête et de retourner nil pour la section que vous ne voulez pas afficher.
Essayer comme ceci:-
Pour le cas d'un tableau statique, qui est, la table des sections et cellules sont configurés dans le Storyboard. Ce qui suit sont mes stratégies pour masquer une section spécifiée en fonction des conditions.
La première étape: mettre en œuvre deux
func
défini dansUITableViewDelegate
-
heightForRowAt
-
heightForHeaderInSection
Par exemple, voici les codes swift:
Étape deux: permet de définir la touche func pour définir les cellules caché pour la section spécifique et l'appeler à partir d'viewWillAppear:
Dans le cas où vous avez besoin de recharger tableview, vous pouvez avoir besoin d'appeler
setSectionVisible()
de nouveau.Je pense que cette stratégie peut fonctionner de données dynamiques à partir de la source de données. De cette façon, vous pouvez contrôler le moment de faire spécifique, visible ou caché.
Pour cacher une section, même dans le milieu de la vue de la table vous avez besoin de tout de la suite
si vous avez omis titleFor/headerFor... vous aurez quelques lignes vides
si vous avez omis heightFor... le titre/le pied de page en-tête de texte apparaîtra toujours