2017-05-06 19 views
0

テーブルビューにカテゴリの名前だけを入力する必要があります。私はそれがこのことを示してテーブルビュー...私は私のすべての情報を追加テーブルビューに名前だけを設定することはできません

Category(name: "Sandwiches & Burgers", items: []) 

HERESに...

let sortedKeys = newArray.sorted{$0.0 < $1.0} 
    let shake = Item(name: "Shake", carbs: 20) 
    let fries = Item(name: "Fries", carbs: 30) 

    let beverages = Category(name: "Beverages", items: [shake]) 
    let chips_fries = Category(name: "Chips & Fries", items: [fries]) 
    let desserts = Category(name: "Desserts", items: []) 
    let other = Category(name: "Other Menu Items", items: []) 
    let sandwiches_burgers = Category(name: "Sandwiches & Burgers", items: []) 
    let sides = Category(name: "Sides", items: []) 

    a_w = Restaurant(name: "A&W", categories: [beverages, chips_fries, desserts, other, sandwiches_burgers, sides]) 

    menuArray = [a_w] 

、その後、私のクラスを移入するとここで

struct Item { 
let name: String 
let carbs: Int 
} 
struct Category { 
    let name: String 
    let items: [Item] 
} 

struct Restaurant { 
    let name: String 
    let categories: [Category] 

} 

はどこだI ...

var currentRestaurant:Restaurant! 
var menuArray:[Restaurant] = [] 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 
} 
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    var array = currentRestaurant.categories 
    print(array) 
    let currentCell = tableView.dequeueReusableCell(withIdentifier: "cell")! 
    currentCell.textLabel?.text = String(describing: array[indexPath.item]) 
    return currentCell 
} 

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return currentRestaurant.categories.count 
} 

答えて

1

データソースcellForRowAtを見てみるが可能になっている:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 
    let category = currentRestaurant.categories[indexPath.row] 
    cell.textLabel!.text = category.name 
    return cell 
} 

しかし、いくつかの点で、テーブルビューをリロードする前に、あなたが実際にこの種類を処理するための通常の方法をcurrentRestaurant

menuArray[0]から

を設定する必要がありますのデータソースは、セクションにレストランを表示することです。

numberOfSections numberOfRowsInSection

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    let restaurant = restaurants[section] 
    return restaurant.categories.count 
} 

override func numberOfSections(in tableView: UITableView) -> Int { 
    return restaurants.count 
} 

とカテゴリの数でレストランの数を返す次にmenuArray

var restaurants = [Restaurant]() 

よりも、いくつかのより説明的な名前へのデータソース配列を宣言してください

およびcellForRowはあなたがすべてでcurrentRestaurantを必要としないこの方法で

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 

    let restaurant = restaurants[indexPath.section] 
    let category = restaurant.categories[indexPath.row] 
    cell.textLabel!.text = category.name 
    return cell 
} 

です。 viewDidLoad

は、データソース配列を移入し、私はこれを行うとき

override func viewDidLoad() { 
    super.viewDidLoad() 

    let shake = Item(name: "Shake", carbs: 20) 
    let fries = Item(name: "Fries", carbs: 30) 

    let beverages = Category(name: "Beverages", items: [shake]) 
    let chips_fries = Category(name: "Chips & Fries", items: [fries]) 
    let desserts = Category(name: "Desserts", items: []) 
    let other = Category(name: "Other Menu Items", items: []) 
    let sandwiches_burgers = Category(name: "Sandwiches & Burgers", items: []) 
    let sides = Category(name: "Sides", items: []) 

    restaurants = [Restaurant(name: "A&W", categories: [beverages, chips_fries, desserts, other, sandwiches_burgers, sides])] 

    tableView.reloadData() 
} 
+0

何がテーブルビューに表示しないテーブルビューをリロードしてください。ある時点でデータをリロードする必要がありますか? @vadian – Johnd

+0

もちろん。実際には、データソースを生成するコードは 'viewDidLoad()'にあるはずです。最後の呼び出しで 'tableView.reloadData()' – vadian

+0

あなたは答えを編集してより明確に@vadianを見ることができますか – Johnd

関連する問題