wake-up-neo.com

Wie kann ich eine UITableView auf einen gruppierten Stil einstellen?

Ich habe eine UITableViewController-Unterklasse mit Abschnitten. Die Abschnitte werden mit dem Standardstil (keine abgerundeten Ecken) angezeigt. Wie kann ich den TableView-Stil so einstellen, dass er im Code gruppiert ist? Ich benutze dafür nicht den Interface Builder, also brauche ich so etwas

[self.tableView setGroupedStyle]

Ich habe nach Stack Overflow gesucht, konnte aber keine Antwort finden.

76
nevan king

Wenn Sie verstehen, was Sie meinen, müssen Sie Ihren Controller mit diesem Stil initialisieren. So etwas wie:

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

Sie können Folgendes tun:

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

Swift 3:

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

Ich gebe Ihnen meine Lösung, ich arbeite im "XIB-Modus", hier der Code einer Unterklasse eines UITableViewControllers:

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

Code unten Für mich gearbeitet, benutze ich auch die Klasse UITableview

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

     if (self)
    {

     }
    return self;
}
13
Gagan Joshi

Das ist nicht so schwer, wie in der Frage erwähnt. Eigentlich ist es ziemlich einfach. Versuchen Sie dies auf einem Storyboard.

 enter image description here

5
Fangming

Wenn Sie UITableViewController erben, können Sie tableView erneut starten.

Ziel c:

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

Schnell 4: 

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

Sie können dies auch tun, wenn Sie es für eine Unterklasse verwenden möchten, die Sie bereits in einer separaten Swift-Datei erstellt haben (wahrscheinlich nicht zu 100% korrekt, aber funktioniert).

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

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

In Ihrem appdelegate.Swift können Sie jetzt anrufen:

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

Swift 4+:

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

Für einen gruppierten Stil in der Benutzeroberfläche selbst: - Wählen Sie TableView aus und ändern Sie den "Stil" (im Attribut-Inspektor)) von "Nur" in "Gruppiert".

2
Zeesha

Swift 4  

Verwenden der normalen TableView

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

Verwenden von TPKeyboardAvoidingTableView  

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

Sie können dies auch mit Storyboard/XIB tun

  1. Zum Storyboard -> Wählen Sie Ihren viewController -> Wählen Sie Ihre Tabelle aus
  2. Wählen Sie im Interface-Builder die Eigenschaft "Style" aus
  3. Wählen Sie die "Gruppiert"
  4. Erledigt
1
Anny

Swift 4

wenn Sie kein Storyboard verwenden möchten, kann dies hilfreich sein.

sie können eine Tabellenansicht hinzufügen und Eigenschaften in einem Abschluss festlegen:

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
    }()

fügen Sie dann eine Unteransicht hinzu und legen Sie die Einschränkungen fest.

0
moraei

Wenn Sie eine TableView für mehrere Tabellen haben und eine dieser Tabellen gruppiert und die andere einfach ist, können Sie den einfachen Stil mit der Funktion von UITableViewDelegate simulieren:

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