2016-03-29 14 views
0

Mein Ziel ist es, eine Tabelle zu haben, die Lebensmittelkategorien auflisten wird.zeigen Sie die gesamte Tabelle in der Tabelle Zelle

Unter jeder Kategorie Name ist eine andere Tabelle, die verschiedene Lebensmittel auflisten wird. Diese Untertabelle sollte vollständig erweitert werden. Ich kann die Daten anzeigen lassen, nur das Layout bereitet mir Kopfschmerzen.

Also sollte unter jedem Lebensmittelkategorie-Etikett in der Elterntabelle eine vollständig erweiterte Untertabelle von Nahrungsmitteln sein. Wenn ich das jedoch ausführe, ist die Untertabelle vollständig reduziert. Nur das Etikett der Lebensmittelkategorie wird angezeigt. Ich kann die Lebensmittel sehen, wenn ich anfange zu klicken und zu scrollen, aber es ist nicht vollständig erweitert. Jede Hilfe wird geschätzt!

Mein Layout sieht schließlich wie folgt enter image description here

Ich habe

class ParentFoodTable: UITableViewController 

und jede Zelle (die eine Markierung und ein anderes Tableview enthält) wird

class ChildFoodCell: UITableViewCell,UITableViewDataSource,UITableViewDelegate 

Wieder einmal konfiguriert, Ich kann die Daten zur Anzeige bringen, es ist nur so, dass das Layout und das Aussehen in der Zelle der Elterntabelle schrecklich sind nicht erweitert oder entspricht der Höhe der Untertabelle.

ParentFoodTable

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 

    return UITableViewAutomaticDimension 
} 

ChildFoodCell

func setUpTable() 
{ 
    subMenuTable?.delegate = self 
    subMenuTable?.dataSource = self 
    subMenuTable?.rowHeight = UITableViewAutomaticDimension 
    subMenuTable?.estimatedRowHeight = 44.0 

} 
+0

Wollen Sie wirklich alles? Warum nicht mit jeder Untertabelle einen neuen Bildschirm erstellen, das bekannte "Master-Detail" -Design. Auf diese Weise können Sie sogar Sub-Sub-Tabellen usw. haben. – Koen

Antwort

0

Es gibt zwei Möglichkeiten, die erste wie durch Koen vorgeschlagen wird, um die Master/Detail-Modell mit einer zweiten Ansicht Controller verwenden, um die Elemente in einer ausgewählten zeigt Kategorie.

Die zweite Option besteht darin, eine "gruppierte Tabellenansicht" zu verwenden, in der die Gruppen Ihren Kategorien entsprechen und die Elemente dann den Elementen innerhalb der Kategorie entsprechen.

Grundsätzlich, dass so etwas aussehen würde:

in einer Tabelle
class Category { 
    let name : String 
    let items : [Item] 

    init(name:String, items:[Item]) { 
     self.name = name 
     self.items = items 
    } 
} 

class Item { 
    let name : String 

    init(name:String) { 
     self.name = name 
    } 
} 

class MyTableViewController : UITableViewController { 
    var data = [Category]() 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     return data.count 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return data[section].items.count 
    } 

    override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? { 
     return data[section].name 
    } 

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let category = data[indexPath.section] 
     let item = category.items[indexPath.row] 
     let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) 

     cell.textLabel?.text = item.name 

     return cell 
    } 
} 
+0

danke dafür. Ich habe die Situation überkompensiert – prawn

Verwandte Themen