98 votes

Comment puis-je définir un UITableView en style groupé ?

Tengo un UITableViewController sous-classe avec des sections. Les sections s'affichent avec le style par défaut (pas de coins arrondis). Comment puis-je définir le style du TableView sur groupé dans le code ? Je n'utilise pas Interface Builder pour cela, j'ai donc besoin de quelque chose comme

[self.tableView setGroupedStyle]

J'ai cherché sur Stack Overflow, mais je n'ai pas trouvé de réponse.

0 votes

Version Swift : Lien

144voto

Lior Points 739

Vous pouvez procéder comme suit :

UITableView *myTable = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];

Swift 3 :

let tableView = UITableView.init(frame: CGRect.zero, style: .grouped)

13 votes

C'EST LA VRAIE SOLUTION ! MERCI. La réponse acceptée est fausse, au moins pour OS 3.0+.

4 votes

Veuillez noter qu'il y a eu une erreur de frappe dans la solution acceptée. Je l'ai corrigée maintenant. Les deux réponses fonctionnent pour moi, mais elles instancient des choses différentes. Cette réponse est une UITableView la réponse acceptée est un UITableViewController .

3 votes

En fait, la réponse acceptée est trompeuse. Veuillez lire ce que le PO a dit : "J'ai une sous-classe UITableViewConotroller". La réponse acceptée vous donne UNIQUEMENT un UITableViewController ordinaire ; sans connaître les détails, il est impossible de résoudre le problème de l'utilisateur concernant la sous-classe. Cette réponse et l'utilisation de self.myTable seraient probablement meilleures, IMHO.

111voto

Dimitris Points 4753

Si je comprends ce que vous voulez dire, vous devez initialiser votre contrôleur avec ce style. Quelque chose comme :

myTVContoller = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];

3 votes

Comme indiqué, il ne s'agit pas d'une propriété qui peut être modifiée. Un groupé est toujours groupé.

0 votes

Ce n'est pas une réponse correcte, cela ne résout pas le problème d'avoir une sous-classe de UITableViewController. Si vous héritez de UITableViewController, vous devez surcharger le constructeur et non créer un autre UITableView ou UITableViewController.

0 votes

Comment faire s'il s'agit d'un contrôleur sous-classé, comme indiqué dans la question ?

21voto

Thomas Decaux Points 2613

Je vous donne ma solution, je travaille en "mode XIB", voici le code d'une sous-classe d'un UITableViewController :

-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithStyle:UITableViewStyleGrouped];
    return self;
}

6 votes

Attention à cette solution : si elle se trouve sous un navigationController dans la NIB, la référence sera perdue et vous ne saurez plus où donner de la tête.

15voto

Gagan Joshi Points 425

Le code ci-dessous a fonctionné pour moi, j'utilise également la classe UITableview.

- (id)initWithStyle:(UITableViewStyle)style
{
     self = [super initWithStyle:UITableViewStyleGrouped];

     if (self)
    {

     }
    return self;
}

1 votes

C'est le droite solution pour les personnes utilisant une sous-classe de UITableViewController. Merci !

-5voto

MyCSharpCorner Points 614

Vous pouvez également essayer de rendre la couleur de la ligne de séparation claire, ce qui pourrait donner un effet de style groupé :

[myTVContoller.tableView setSeparatorColor:[UIColor clearColor]];

0 votes

Les sections ne s'effondreront pas de cette façon.

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