2017-05-06 96 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]