没有用结构数组填充tableview

时间:2017-05-06 18:16:11

标签: ios swift uitableview

我需要使用结构数组填充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]

}

3 个答案:

答案 0 :(得分:0)

在这一行

let menuArray = [a_w]

您正在创建一个本地变量menuArray,它与具有相同名称的属性不同,代表数据源数组。

省略let

menuArray = [a_w]

PS:请使用比a_w更具描述性的变量名称。

答案 1 :(得分:0)

从你的代码看起来你有两个同名的变量。

  1. 一个在班级宣布
  2. 另一个在viewDidLoad方法中声明,如

    让menuArray = [a_w]

  3. 只需从viewDidLoad中声明的 let 中删除。

    看起来像这样

    menuArray = [a_w]
    

答案 2 :(得分:-1)

您的menuArray只包含一个项目,因此只有一行应显示餐厅名称。 尝试检查是否设置了tableView委托和dataSource属性 Workload failed: permission denied

具有默认标签的原型单元格也应该具有名称titleLabel 尝试访问tableView.dataSource = self tableView.delegate = self而不是titleLabel