2017-05-06 98 views
0

我需要用一個結構數組填充我的tableView。該結構的第一個屬性是名稱。這就是我想...不使用結構數組填充tableview

var menuArray:[Restaurant] = [Restaurant]() 
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: []) 

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

    let menuArray = [a_w] 


} 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let currentCell = tableView.dequeueReusableCell(withIdentifier: "cell") 
    let currentRestaurant = menuArray[indexPath.row] 
    currentCell?.textLabel!.text = currentRestaurant.name 
    return currentCell! 
} 
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 

    return menuArray.count 
} 

爲什麼不會它填充我的tableView

這裏是我的類也......

import Foundation 

struct Item { 
    let name: String 
    let carbs: Int 
} 

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

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

} 
+0

您是否嘗試設置它的數據後重裝表視圖? –

+0

是的,它沒有工作 – Johnd

+0

你是否設置了表視圖的委託和數據源? –

回答

0

在這一行

let menuArray = [a_w] 

要創建一個局部變量menuArray其是從與表示數據源陣列相同的名稱的屬性不同。

省略let

menuArray = [a_w] 

PS:請比a_w使用更具描述性的變量名。

+0

非常感謝,就是這樣 – Johnd

-1

你menuArray containse只有一個項目所以只一行應顯示餐廳名稱。 嘗試檢查,如果你設置的tableView委託和DataSource屬性 tableView.dataSource = self tableView.delegate = self

還與默認標籤原型細胞應該有名字titleLabel 嘗試訪問titleLabel代替textLabel

0

從你的代碼看起來你有兩個同名的變量。

  1. 一種是在類級聲明
  2. 另外一個被聲明在viewDidLoad方法等

    讓menuArray = [A_W]

只是刪除從此這是在viewDidLoad中聲明。

它看起來像這樣

menuArray = [a_w]