我需要使用结构数组填充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)
在这一行
let menuArray = [a_w]
您正在创建一个本地变量menuArray
,它与具有相同名称的属性不同,代表数据源数组。
省略let
menuArray = [a_w]
PS:请使用比a_w
更具描述性的变量名称。
答案 1 :(得分:0)
从你的代码看起来你有两个同名的变量。
另一个在viewDidLoad方法中声明,如
让menuArray = [a_w]
只需从viewDidLoad中声明的 let 中删除。
看起来像这样
menuArray = [a_w]
答案 2 :(得分:-1)
您的menuArray只包含一个项目,因此只有一行应显示餐厅名称。
尝试检查是否设置了tableView委托和dataSource属性
Workload failed: permission denied
具有默认标签的原型单元格也应该具有名称titleLabel
尝试访问tableView.dataSource = self
tableView.delegate = self
而不是titleLabel
。