Question Supprimer les séparateurs supplémentaires sous UITableView [fermé]


Lorsque je configure une vue de table avec 4 lignes, il existe toujours des lignes de séparateurs supplémentaires (ou des cellules vides supplémentaires) sous les lignes remplies.

Comment pourrais-je enlever ces cellules?

image for extra separator lines in UITableView


626
2017-09-02 20:05


origine


Réponses:


Générateur d'interface (iOS 9+)

Faites simplement glisser un UIView sur la table. Dans le storyboard, il sera placé en haut de vos cellules personnalisées. Vous préférerez peut-être le nommer "footer".

Ici, il est montré en vert pour plus de clarté, vous voudrez probablement une couleur claire.

Notez qu'en ajustant la hauteur, vous pouvez affecter la façon dont le "rebond inférieur" de la table est géré, comme vous préférez. (La hauteur zéro est généralement bien).

enter image description here


Pour le faire par programme:

Rapide

override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.tableFooterView = UIView()
}

Objectif c

iOS 6.1+

- (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];

Historiquement dans iOS:

Ajouter au contrôleur de vue de 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];
}

1350
2017-11-24 12:17



Voici une autre façon de le faire sans le style de tableau groupé, et un que vous ne devineriez probablement pas. Ajouter un en-tête et pied de page (peut-être que l'un ou l'autre suffit, n'ont pas vérifié) provoque la disparition des séparateurs des rangées de remplissage / vides.

Je suis tombé dessus parce que je voulais un peu d'espace en haut et en bas des tables pour diminuer le risque de frapper des boutons au lieu d'une cellule de table avec des doigts charnus. Voici une méthode pour coller une vue vide en tant qu'en-tête et pied de page. Utilisez n'importe quelle hauteur que vous aimez, vous éliminez toujours 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 dans mon application (gestionnaire de listes "AcmeLists" dans le magasin iTunes ...) et court-circuite la méthode addHeaderAndFooter pour vérifier. Sans ça, J'ai les séparateurs de rangée supplémentaires; avec le code, j'ai ce que vous voyez dans cette fenêtre snap: pas de séparateurs de ligne de tableau. Donc je ne sais pas pourquoi ça n'aurait pas marché pour vous. De plus, il est logique pour moi d'avoir un pied de page personnalisé sur une vue de table qui devrait nécessairement arrêter de dessiner des séparateurs de ligne pour les lignes vides 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 vu à l'écran, et ensuite pour une table avec deux rangées. Dans les deux cas, pas de séparateurs étrangers.

Peut-être que vos vues personnalisées n'ont pas été réellement ajoutées. Pour vérifier cela, définissez la couleur d'arrière-plan sur autre chose que clearColor, par exemple., [UIColor redColor]. Si vous ne voyez pas de barres rouges au bas de la table, votre pied de page n'a pas été défini.


125
2017-10-29 05:44



Suppression de lignes de séparation supplémentaires pour les lignes vides dans UITableView dans Rapide

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.yourTableview.tableFooterView = UIView()
    }

51
2018-03-24 16:21



Je voudrais prolonger wkw répondre:

Ajouter simplement un pied de page avec la hauteur 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 - 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 encore plus simple - pour supprimer simplement les séparateurs:

[_tableView setTableFooterView:[UIView new]];

Grâce à wkw encore :)


36
2018-03-18 01:27



Pour iOS 7+ à l'aide de Storyboards

Il suffit de faire glisser un UIView Dans votre UITableView comme le pied de page. Définissez la hauteur de la vue du pied de page sur 0.


20
2017-11-16 11:35



Essaye ça. Cela a fonctionné pour moi:

- (void) viewDidLoad
{
  [super viewDidLoad];

  // Without ARC
  //self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];

  // With ARC, tried on Xcode 5
  self.tableView.tableFooterView = [UIView new];
}

17
2017-07-25 11:36



Pour Swift:

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.tableFooterView = UIView()
    }

10
2018-04-12 15:16



Si vous utilisez Swift, ajoutez le code suivant à viewDidLoad du contrôleur qui gère la tableview:

override func viewDidLoad() {
    super.viewDidLoad()

    //...

    // Remove extra separators
    tableView.tableFooterView = UIView(frame: CGRectZero)
}

7
2017-11-06 11:41



Faire progresser la solution de J. Costa: Vous pouvez apporter un changement global à la table en mettant cette ligne de code:

[[UITableView appearance] setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];

à l'intérieur de la première méthode poosible (généralement dans AppDelegate, dans: application: didFinishLaunchingWithOptions: méthode).


6
2018-03-16 09:47



Vous pouvez simplement ajouter un pied de page vide à la fin puis il va cacher les cellules vides mais il aura aussi l'air assez moche:

tableView.tableFooterView = UIView()

enter image description here

Il y a une meilleure approche: ajouter une ligne de 1 point à la fin de la vue de la table en tant que pied de page et les cellules vides ne seront plus affichées.

let footerView = UIView()
footerView.frame = CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 1)
footerView.backgroundColor = tableView.separatorColor
tableView.tableFooterView = footerView

enter image description here


6
2018-05-01 20:36



il suffit d'ajouter ce code (Rapide). .

tableView.tableFooterView = UIView()

6
2018-01-14 05:09