【问题标题】:Not populating tableview with structure array不使用结构数组填充表视图
【发布时间】:2017-05-06 18:16:11
【问题描述】:

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

}

【问题讨论】:

  • 您是否尝试过在设置数据后重新加载表格视图?
  • 是的,它没有用
  • 你设置了table view的委托和数据源吗?
  • 它是一个tableviewcontroller
  • let menuArray 看起来像一个局部变量。数据源数组是如何声明的?

标签: ios swift uitableview


【解决方案1】:

在这一行

let menuArray = [a_w]

您正在创建一个局部变量menuArray,它与代表数据源数组的同名属性不同。

省略let

menuArray = [a_w]

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

【讨论】:

  • 非常感谢,原来如此
【解决方案2】:

从您的代码看来,您有两个同名的变量。

  1. 在类级别声明一个
  2. 另一个在 viewDidLoad 方法中声明,如

    让 menuArray = [a_w]

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

它看起来像这样

menuArray = [a_w]

【讨论】:

    【解决方案3】:

    您的 menuArray 仅包含一项,因此只有一行显示餐厅名称。 尝试检查是否设置了 tableView 委托和数据源属性 tableView.dataSource = self tableView.delegate = self

    此外,具有默认标签的原型单元格应具有名称 titleLabel 尝试访问titleLabel 而不是textLabel

    【讨论】:

      猜你喜欢
      • 2013-01-20
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 2019-09-18
      • 2014-01-13
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      相关资源
      最近更新 更多