web-dev-qa-db-fra.com

Comment définir une UITableVoir sur un style groupé

J'ai une sous-classe UITableViewController avec des sections. Les sections sont affichées avec le style par défaut (pas de coins arrondis). Comment définir le style TableView sur groupé dans le code? Je n'utilise pas Interface Builder pour cela, alors j'ai besoin de quelque chose comme

[self.tableView setGroupedStyle]

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

76
nevan king

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];
95
Dimitris

Vous pouvez faire ce qui suit:

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

Swift 3:

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

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;
}
19
Thomas Decaux

Code ci-dessous Travaillé pour moi, j'utilise également la classe UITableview

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

     if (self)
    {

     }
    return self;
}
13
Gagan Joshi

Définir ce n'est pas si difficile que mentionné dans la question. En fait c'est assez simple. Essayez ceci sur le storyboard.

 enter image description here

5
Fangming

Si vous héritez de UITableViewController, vous pouvez simplement initialiser tableView.

Objectif c:

self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];

Swift 4: 

self.tableView = UITableView(frame: CGRect.zero, style: .grouped)
5
DZoki019

Vous pouvez également le faire si vous souhaitez l'utiliser sur une sous-classe que vous avez déjà créée dans un fichier Swift séparé (probablement pas correct à 100% mais fonctionne)

override init(style: UITableViewStyle) {
    super.init(style: style)
    UITableViewStyle.Grouped
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

Maintenant, dans votre appdelegate.Swift, vous pouvez appeler:

let settingsController = SettingsViewController(style: .Grouped)
2
Jordi Bruin

Swift 4+:

let myTableViewController = UITableViewController(style: .grouped)
2
Juan Boero

Pour définir le style groupé dans l'interface utilisateur elle-même: -Sélectionnez TableView, puis changez le "style" (dans l'inspecteur d'attributs)) de brut à groupé.

2
Zeesha

Swift 4  

Utiliser Normal TableView

let tableView = TableView(frame: .zero, style: .grouped)

Utilisation de TPKeyboardAvoidingTableView  

let tableView = TPKeyboardAvoidingTableView(frame: .zero, style: .grouped)
2

Vous pouvez le faire avec storyboard/XIB également

  1. Aller au storyboard -> Sélectionnez votre viewController -> Sélectionnez votre table
  2. Sélectionnez la propriété "Style" dans interface-builder
  3. Sélectionnez le "Groupé"
  4. Terminé
1
Anny

Swift 4

si vous ne voulez pas utiliser le storyboard, cela pourrait être une aide.

vous pouvez ajouter une vue tabulaire et définir des propriétés dans une fermeture:

lazy var tableView: UITableView = {
        let tableView = UITableView(frame: .zero, style: .grouped)

        tableView.backgroundColor = UIColor(named: Palette.secondaryLight.rawValue)
        tableView.rowHeight = 68
        tableView.separatorStyle = .none
        tableView.translatesAutoresizingMaskIntoConstraints = false
        return tableView
    }()

puis ajoutez dans la sous-vue et définissez des contraintes.

0
moraei

Si vous avez une TableView pour plusieurs tables, et que l'une de ces tables est groupée et l'autre, vous pouvez simuler le style brut avec la fonction UITableViewDelegate

override func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {   
    return CGFloat.min
}
0
Illya Krit