web-dev-qa-db-fra.com

Comment supprimer des cellules vides dans UITableView?

j'essaie d'afficher un simple UITableView avec des données. Je souhaite définir la hauteur statique de la variable UITableView afin qu’elle n’affiche pas les cellules vides à la fin du tableau. comment je fais ça?

code:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    NSLog(@"%d", [arr count]);
    return [arr count];
}
341
z22

Définissez une vue de pied de table de hauteur zéro (peut-être dans votre méthode viewDidLoad), comme suit:

Swift:

tableView.tableFooterView = UIView()

Objective-C:

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

Parce que le tableau pense qu’il ya un pied de page à afficher, il n’affiche pas de cellules autres que celles que vous avez explicitement demandées.

Interface Builder pro-tip:

Si vous utilisez un xib/Storyboard, vous pouvez simplement faire glisser un UIView (avec une hauteur de 0 pt) au bas de la vue UITableView.

853
Andy

syntaxe Swift 3:

tableView.tableFooterView = UIView(frame: .zero)

syntaxe Swift: <2.

tableView.tableFooterView = UIView(frame: CGRect.zeroRect)

syntaxe Swift 2.0:

tableView.tableFooterView = UIView(frame: CGRect.zero)
101
Dustin Williams

Dans le Storyboard, sélectionnez la variable UITableView et modifiez la propriété Style de Plain à Grouped.

62
Gabriel Diaconescu

Mis en œuvre avec Swift sur Xcode 6.1

self.tableView.tableFooterView = UIView(frame: CGRectZero)
self.tableView.tableFooterView?.hidden = true

La deuxième ligne de code ne provoque aucun effet sur la présentation, vous pouvez utiliser pour vérifier si est masqué ou non.

Réponse tirée de ce lien Impossible de masquer les cellules vides dans UITableView Swift

16
Leonardo Jorge

Je ne peux pas ajouter de commentaire à partir de maintenant, donc en ajoutant ceci comme réponse.

La réponse de @ Andy est bonne et les mêmes résultats peuvent être obtenus avec la ligne de code suivante:

tableView.tableFooterView = [UIView new];

La méthode 'new' appartient à la classe NSObject et appelle les méthodes alloc et init pour UIView.

11
Sahil

J'ai essayé le code:

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

Dans la section viewDidLoad, xcode6 affiche un avertissement. J'ai mis un "moi". devant et maintenant ça marche bien. donc le code de travail que j'utilise est:

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

ou vous pouvez appeler la méthode tableView pour définir la hauteur du pied de page en 1 point; une dernière ligne sera alors ajoutée, mais vous pouvez aussi la masquer en définissant la couleur d'arrière-plan du pied de page.

code:

func tableView(tableView: UITableView,heightForFooterInSection section: Int) -> CGFloat {
     return 1
}

ressemble à la dernière ligne

3
KostiaZzz
override func viewWillAppear(animated: Bool) {
    self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)

/// OR 

    self.tableView.tableFooterView = UIView()
}
2
A.G

tilisation de UITableViewController

La solution acceptée modifiera la hauteur de la TableViewCell. Pour résoudre ce problème, procédez comme suit:

  1. Ecrivez un extrait de code donné ci-dessous dans la méthode ViewDidLoad.

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

  2. Ajoutez la méthode suivante dans le fichier TableViewClass.m.

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
    {
        return (cell height set on storyboard); 
    }
    

C'est ça. Vous pouvez construire et exécuter votre projet.

1
Manan Devani

dans la méthode ci-dessous:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (([array count]*65) > [UIScreen mainScreen].bounds.size.height - 66)
    {
        Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [array count]*65)); 
    }
    else
    {
        Table.frame = CGRectMake(0, 66, self.view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 66);
    }
    return [array count];
}

ici 65 est la hauteur de la cellule et 66 est la hauteur de la barre de navigation dans UIViewController.

0
Bharath Raj