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];
}
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.
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)
Dans le Storyboard, sélectionnez la variable UITableView
et modifiez la propriété Style de Plain
à Grouped
.
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
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
.
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];
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
}
override func viewWillAppear(animated: Bool) {
self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)
/// OR
self.tableView.tableFooterView = UIView()
}
tilisation de UITableViewController
La solution acceptée modifiera la hauteur de la TableViewCell
. Pour résoudre ce problème, procédez comme suit:
Ecrivez un extrait de code donné ci-dessous dans la méthode ViewDidLoad
.
tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
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.
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.