2016-04-14 6 views
1

Ich brauche 2 Tabellen im selben Bildschirm (unterschiedliche Gestaltung der Zellen für jede Tabelle).Tabellenansicht mit 2 Abschnitten unterschiedliches Design für Zellen

Ich bin mir nicht sicher, ob ich mit 2 Tabellen in der gleichen Ansicht arbeiten soll (die Schriftrolle wird gerade vermasselt) oder habe eine Tabelle mit 2 Sektionen und Design de Zellen in jeder Sektion anders.

Ich habe es nicht geschafft, ein Beispiel mit einer Tabellenansicht mit 2 Abschnitten und unterschiedlicher Gestaltung der Zellen in den 2 Abschnitten zu finden.

Ist es möglich?

Oder sollte ich versuchen, es mit 2 verschiedenen Tabellen auszuarbeiten?

Antwort

3

Ich habe es nicht geschafft, ein Beispiel mit einer Tabellenansicht mit 2 Abschnitten und unterschiedlicher Gestaltung der Zellen in den 2 Abschnitten zu finden. Ist es möglich?

Ja, es ist möglich :)

Dies ist, wo Sie die Methode tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell vom UITableViewDataSource-Protokoll verwenden.

Sie überprüfen, welchen Abschnitt Sie eine Unterklasse von UITableViewCell zurückgeben sollen, erstellen Sie eine Instanz, möglicherweise füllen Sie sie und dann geben Sie das zurück.

Also für diese Arbeit würden Sie brauchen.

  • Um eine Reihe von Unterklassen von UITableViewCell mit NIB-Dateien zu erstellen.
  • Zum Beispiel in viewDidLoad() registrieren Sie NIBs wie so:

    tableView.registerNib(UINib(nibName: "Cell1", bundle: nil), forCellReuseIdentifier: "Cell1") 
    tableView.registerNib(UINib(nibName: "Cell2", bundle: nil), forCellReuseIdentifier: "Cell2") 
    
  • In tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) Sie überprüfen, welcher Abschnitt gefragt wird und die richtige Unterklasse wie so zurückkehren (mit Raum für Verbesserungen :-)):

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
        switch indexPath.section { 
        case 0: 
         if let cell1 = tableView.dequeueReusableCellWithIdentifier("Cell1") as? Cell1 { 
          //populate your cell here 
          return cell1 
         } 
        case 1: 
         if let cell2 = tableView.dequeueReusableCellWithIdentifier("Cell2") as? Cell2 { 
          //populate your cell here 
          return cell2 
         } 
        default: 
         return UITableViewCell() 
        } 
        return UITableViewCell() 
    } 
    

Hoffnung, die

+0

Große Antwort hilft, danke, es hat mir sehr geholfen! – asheyla

+0

Gern geschehen, froh, dass es geklappt hat – pbodsk