J'ai quelques problèmes avec ma UITableView
.
Lorsque j'ajoute un UITableview
sur ma page, il génère par défaut un nombre fixe de lignes, Même si j'ai défini le nombre de lignes de la section dans 1
. Toutes les lignes apparaissent sauf la première ligne, et sont des lignes vides. Je souhaite donc masquer toutes les lignes vides de la variable UItableview
.
En fonction des lignes non vides, je souhaite modifier la hauteur de ma UItableView
.
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.
NOUVELLE REPONSE
Dans Swift 2.2, 3.0 et versions ultérieures, procédez comme suit:
tableView.tableFooterView = UIView()
VIEILLE RÉPONSE CI-DESSOUS. Gardé pour la postérité.
Si vous devez utiliser UITableViewStylePlain
et que vous n'utilisez pas footerView pour autre chose, vous pouvez utiliser la solution semi-sale suivante si vous avez activé ARC enabled .:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UIView *view = [[UIView alloc] init];
return view;
}
Si vous avez ARC disabled , 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.
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01f;
}
et pour iOS 7
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
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.
- (void) viewDidLoad
{
[super viewDidLoad];
self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
}
Si votre tableview a plusieurs sections, vous pouvez essayer ceci:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
if (section == tableView.numberOfSections - 1) {
return [UIView new];
}
return nil;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
if (section == tableView.numberOfSections - 1) {
return 1;
}
return 0;
}
Cela peut également être fait via Interface Builder. Ajoutez simplement UIView de 1 pixel en tant que pied de page à UITableView. C'est en gros la même chose que la plupart des réponses ici, mais cela conserve certaines spécificités de l'interface utilisateur dans la vue plutôt que dans le contrôleur de vue.
[self.SomeTableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];
Utilisez cette option pour supprimer les lignes si la variable UITableView
est vide.
dans la méthode qui renvoie le nombre de lignes, spécifiez le count
vous-même de manière dynamique. Par exemple, si vous allez remplir la table avec, par exemple, un NSArray
nommé arrayForRows:
return [arrayForRows count]; // inside the method which returns the number of rows.
L'exemple ci-dessus est un exemple simple de remplissage d'une table avec un tableau en tant que source de données. Il n'y a pas de lignes vides. Seules autant de lignes apparaissent dans la table en fonction de la count
des éléments du tableau remplissant la table.
Je pense que vous voulez dire la hauteur de la ligne dans la table. Vous pouvez jouer avec la hauteur des lignes en utilisant la méthode suivante:
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
EDIT: ah maintenant je comprends ce que vous essayez de réaliser. Vous essayez d'éviter d'afficher les lignes vides séparées avec ces lignes de séparation, n'est-ce pas? Voir ce post:
Un peu caché dans la réponse de Bourne; si vous souhaitez masquer les lignes vides en bas d'une tableview simple avec plusieurs sections, utilisez la réponse suivante:
Pour Swift:
override func viewWillAppear(animated: Bool) {
self.tableView.tableFooterView = UIView(frame: CGRect.zeroRect)
// OR
self.tableView.tableFooterView = UIView()
}
Pour C #: (n'oubliez pas d'ajouter using CoreGraphics;
)
public override void ViewWillAppear(bool animated)
{
base.ViewWillAppear(animated);
this.sampleTableview.TableFooterView = new UIView(frame: CGRect.Empty);
}