Lorsque je configure une vue tableau à 4 lignes, il y a toujours des lignes de séparation supplémentaires (ou des cellules vides supplémentaires) sous les lignes remplies.
Comment puis-je enlever ces cellules ?
Il suffit de faire glisser un UIView sur la table. Dans le storyboard, il sera placé en haut, sous vos cellules personnalisées. Vous préférerez peut-être l'appeler "pied de page".
Ici, il est montré en vert pour plus de clarté, vous voudriez probablement une couleur claire.
Notez qu'en ajustant la hauteur, vous pouvez affecter la façon dont le "rebond du bas" de la table est traité, selon vos préférences. (La hauteur zéro est généralement parfaite).
Pour le faire de manière programmatique :
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.tableFooterView = UIView()
}
- (void)viewDidLoad
{
[super viewDidLoad];
// This will remove extra separators from tableview
self.tableView.tableFooterView = [UIView new];
}
ou si vous préférez,
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
Ajouter au contrôleur de la vue de la table...
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// This will create a "invisible" footer
return CGFLOAT_MIN;
}
et si nécessaire...
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
return [UIView new];
// If you are not using ARC:
// return [[UIView new] autorelease];
}
Je pense que vos descriptions et votre code sont inversés. Quoi qu'il en soit, cela a très bien fonctionné pour moi. Je n'utilise de "vrais" pieds de page qu'avec des tableaux groupés, j'ai donc ajouté if (tableView.style != UITableViewStyleGrouped) { } autour de votre code. Maintenant, tous mes tableaux non groupés perdent leurs cellules supplémentaires, tandis que mes tableaux groupés ne sont pas affectés.
Suite à ma note ci-dessus, je vais ajouter un avertissement : si vous mettez des conditions dans la méthode viewForFooterInSection, assurez-vous que la méthode renvoie soit un UIView, soit nil. Si vous retournez accidentellement void, votre application se plantera !
@Mathieu Cela fonctionnera parce que si le tableau a un pied de page personnalisé, il ne créera pas de lignes "fantômes" pour remplir la vue du tableau. Vous devez donc créer une vue vide qui sera utilisée comme pied de page et définir une hauteur proche de 0 (elle ne peut pas être nulle, sinon l'iOS ne la rendra pas). Avec cette simple astuce, vous changerez le comportement par défaut.
Voici une autre façon de le faire sans le style de tableau groupé, et une que vous ne devineriez probablement pas. Ajout de un en-tête et pied de page du tableau (peut-être que l'un ou l'autre suffit, je n'ai pas vérifié) fait disparaître les séparateurs des lignes de remplissage/blanches.
Je suis tombé sur ce système parce que je voulais un peu d'espace en haut et en bas des tableaux pour réduire le risque de frapper des boutons au lieu d'une cellule de tableau avec des doigts charnus. Voici une méthode pour coller une vue vide dans l'en-tête et le pied de page. Utilisez la hauteur que vous voulez, vous éliminez quand même les lignes de séparation supplémentaires.
- (void) addHeaderAndFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
v.backgroundColor = [UIColor clearColor];
[self.myTableView setTableHeaderView:v];
[self.myTableView setTableFooterView:v];
[v release];
}
En réponse à @Casebash, je suis retourné au code de mon application ("AcmeLists" List Manager dans iTunes store...) et j'ai court-circuité la méthode addHeaderAndFooter pour vérifier. Sans elle Avec le code, j'ai les séparateurs de ligne supplémentaires ; avec le code, j'ai ce que vous voyez dans cette fenêtre instantanée : pas de séparateurs de ligne de table image . Je ne vois donc pas pourquoi cela n'aurait pas fonctionné pour vous. De plus, il me semble logique qu'un pied de page personnalisé sur une vue tableau doive nécessairement cesser de dessiner des séparateurs de ligne pour les lignes vides situées en dessous. Ce serait hideux. Pour référence, j'ai regardé des tableaux où il y avait plus de lignes que ce qui pouvait être visualisé à l'écran, et ensuite pour un tableau avec deux lignes. Dans les deux cas, pas de séparateurs superflus.
Peut-être que vos vues personnalisées n'ont pas été ajoutées. Pour vérifier cela, définissez la couleur d'arrière-plan à quelque chose d'autre que clearColor
par exemple, [UIColor redColor]
. Si vous ne voyez pas de barres rouges au bas du tableau, votre pied de page n'a pas été défini.
Je voudrais prolonger wkw réponse :
Le simple fait d'ajouter un pied de page avec une hauteur de 0 fera l'affaire. (testé sur sdk 4.2, 4.4.1)
- (void) addFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
[self.myTableView setTableFooterView:v];
}
ou encore plus simple - là où vous configurez votre tableview, ajoutez cette ligne :
//change height value if extra space is needed at the bottom.
[_tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectMake(0,0,0,0)]];
ou, plus simplement encore, de supprimer tout séparateur :
[_tableView setTableFooterView:[UIView new]];
Merci à wkw encore :)
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.