50 votes

Comment donner de l'espace entre deux cellules dans un tableau ?

Je veux un espace entre deux cellules dans la vue tableau,

Je veux une cellule comme celle-ci,

enter image description here

Comment puis-je faire ça ?

0 votes

Vous devez créer une cellule personnalisée et pour cela veuillez vous référer à Lien 1 y Lien 2

0 votes

Regardez ma réponse en bas de page.

123voto

Brian Points 3134

Vous ne pouvez pas définir la distance entre les cellules directement, mais vous pouvez définir la hauteur de l'en-tête dans la section pour obtenir le même résultat.

1.définir le nombre de cellules dont vous avez besoin comme sections :

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{
    return 3; // in your case, there are 3 cells
}

2.retourner seulement 1 cellule pour chaque section

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return 1;
}

3.définir la hauteur de l'en-tête dans la section pour définir l'espace entre les cellules

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 10.; // you can have your own choice, of course
}

4.définir la couleur d'arrière-plan de l'en-tête à une couleur claire, de sorte qu'il ne sera pas bizarre

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView *headerView = [[UIView alloc] init];
    headerView.backgroundColor = [UIColor clearColor];
    return headerView;
}

27voto

obaid Points 313

La meilleure façon d'obtenir de l'espace entre deux cellules dans TableView, déclarez le nombre de sections que vous voulez dans la méthode déléguée de numberofsections de cette façon

Par exemple, vous avez un tableau de 10 objets

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
  return [array count]; //array count returns 10
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

    return 1;// this should be one because it will create space between two cells if you want space between 4 cells you can modify it.
}

Le point important est que dans la méthode de délégation cellForRowAtIndexPath vous devez utiliser indexpath.section mais pas indexpath.row.

cell.textLabel.text=[NSString stringWithFormat:@"%@",[array objectAtIndex:indexPath.section]];

Il s'agit de vérifier l'espace entre deux cellules dans votre tableau. Bonne lecture !

0 votes

Merci pour cette petite information. Ça a marché comme sur des roulettes !

0 votes

Merci pour la partie indexPath.section

0 votes

Comment donner un espace particulier comme 5px ou 10px entre les deux

23voto

DShah Points 5217

Vous pouvez créer des sections de TableView également dans l'UITableView... Ces méthodes sont obligatoires pour créer des sections et dans chaque section vous pouvez créer une cellule unique comme dans votre image...

0 votes

Mais comment allez-vous maintenir ce tableau que nous donnons dans le cellforrowindexpath ....i suis confronté au problème que mon chaque cellule imprimant le même élément dans chaque ligne de section. Une idée ?

0 votes

@PavanMore : Quel est votre scénario exact ? Il est facile de maintenir un tableau. Il suffit de déclarer la propriété de NSArray et de l'initialiser. Ensuite, en fonction de cellForRowIndexpath, c'est-à-dire de l'index de la cellule, il suffit de changer le texte de la cellule. C'est facile... si votre scénario est différent, veuillez l'élaborer.

1 votes

Si vous avez à la fois des sections et des rangées multiples, essayez de cette façon stackoverflow.com/a/29258935/2446178

17voto

averydev Points 2931

La réponse par sections multiples pourrait fonctionner, mais elle est extrêmement fragile et ne permet pas de réel sections. Au lieu de cela, vous devez créer une cellule personnalisée, ou un prototype de cellule personnalisée qui comporte simplement un espace en bas et/ou en haut.

Utilisez vos jambes de force et vos ressorts dans IB pour maintenir cet écart uniforme, et utilisez heightForRowAtIndexPath pour renvoyer une hauteur qui inclut l'écart.

0 votes

Ce n'est pas cassant - je ne pense pas - mais c'est un peu haché. J'ai intégré l'espace dans la cellule de ma solution avant de trouver cette page, mais cela présente aussi des inconvénients. Dans mon cas, cela rend la conception de la cellule beaucoup plus compliquée qu'elle ne le serait si l'espace était géré par le tableau. A VOUS DE VOIR.

0 votes

Les actions d'édition ont l'air merdiques, la pseudo marge est en fait une partie de la cellule, donc dans le cas où vous avez des actions d'édition, la vue de l'action semble être plus haute que la vue.

0 votes

Les modes de sélection et d'édition par défaut ont l'air mauvais, mais ils sont facilement modifiables...

14voto

Pradumna Patil Points 1374

Objectif - C

 UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 3)];/// change size as you need.       
 separatorLineView.backgroundColor = [UIColor whiteColor];// you can also put image here
 [cell.contentView addSubview:separatorLineView];

Swift 3 (La même chose fonctionnera pour Swift 4 aussi)

var separatorLineView = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 3))
/// change size as you need.       
separatorLineView.backgroundColor = UIColor.white
// you can also put image here
cell.contentView.addSubview(separatorLineView)

Ça a marché pour moi.

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