63 votes

comment masquer les lignes vides dans un UITableView et modifier la hauteur de la vue Uitableview en fonction des lignes non vides

J'ai quelques problèmes avec mon UITableView .

  1. Lorsque j'ajoute un UITableview de ma page, il génère par défaut un nombre fixe de lignes, même si je règle le nombre de lignes dans la section comme 1 . Toutes les lignes apparaissent à l'exception de la première ligne et toutes sont des lignes vides. Donc, je veux cacher toutes les lignes vides dans les UItableview .

  2. En fonction des lignes non vides, je souhaite modifier la hauteur de mes UItableView .

82voto

ArtSabintsev Points 2473

Si vous devez utiliser UITableViewStylePlain et que vous n'utilisez pas de footerView pour autre chose, vous pouvez utiliser la solution semi-sale suivante si vous avez activé ARC:.

 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    UIView *view = [[UIView alloc] init];

    return view;
}
 

Si vous avez désactivé ARC, utilisez les éléments suivants:

 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    UIView *view = [[[UIView alloc] init] autorelease];

    return view;
}
 

Cela crée un footerView invisible, qui apparaît immédiatement après la dernière cellule remplie de données.

54voto

Sanniv Points 1200

Vous êtes sûr que vous utilisez le style UITableViewStyleGrouped ?

Parce que par défaut, il est défini sur UITableViewStylePlain qui affiche également les cellules vides après l'affichage des cellules remplies.

34voto

Sachin Points 24
 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 
 { 
     return 0.01f;
 }
 

et pour iOS 7

  self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
 

17voto

Katlu Points 249

J'ai résolu le problème en créant une simple UIView en tant que vue de pied de page avec la même couleur d'arrière-plan que celle de la table:

 (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
    UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)] autorelease];
    view.backgroundColor = [UIColor whiteColor];
    return view;
}
 

Peut-être devez-vous également désactiver le défilement dans votre vue tableau.

11voto

yunas Points 2702
- (void) viewDidLoad
{
  [super viewDidLoad];
  self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X