2016-03-29 8 views
0

私の目標は、食品カテゴリを一覧表示するテーブルを用意することです。テーブルセル内にフルテーブルを表示

各カテゴリ名の下には、さまざまな食品をリストする別のテーブルがあります。このサブテーブルは完全に展開する必要があります。私は表示するデータを得ることができます、それはレイアウトが私に頭痛を与えているということだけです。

親テーブルの各食品カテゴリラベルの下には、食品アイテムの完全に展開されたサブテーブルが必要です。しかし、私がこれを実行すると、サブテーブルはずっと崩壊しています。食品カテゴリのラベルのみが表示されています。私はクリックしてスクロールすると食べ物を見ることができますが、それは完全に拡張されていません。どんな助けもありがとう!

私のレイアウトは、最終的に私が

class ParentFoodTable: UITableViewController 

を持っているし、(ラベルと別のテーブルビューが含まれている)各セルは、もう一度

class ChildFoodCell: UITableViewCell,UITableViewDataSource,UITableViewDelegate 

に設定されている以下の enter image description here

のように見えます私は表示するためのデータを取得することができます、それはレイアウトと外観が親テーブルのセルがサブテーブルの高さに拡大または適合しない。

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

をあなたは本当に一つのテーブルですべてをしたいですか?なぜ各サブテーブル、よく知られている "マスターディテール"デザインで新しいスクリーンを作ってみませんか?このようにサブ・サブ・テーブルなどを持つこともできます。 – Koen

答えて

0

公園によって示唆されるように二つのオプション、最初はある選択中の項目を示す第2のビューコントローラとマスタ/詳細モデルを使用することですカテゴリー。

第2の選択肢は、グループがあなたのカテゴリーに対応し、アイテムがカテゴリー内のアイテムに対応する「グループ化されたテーブルビュー」を使用することです。

基本的には、そのようなものになります。

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

これに感謝します。私は状況を過ちしていた – prawn

関連する問題