for循环仅在尝试在tableView中显示时显示数组中的第一项

时间:2017-05-19 21:22:21

标签: ios arrays swift uitableview

我正在尝试根据数组中的项目显示tableview单元格,但由于某些奇怪的原因,它只会显示数组中的第一项。当我使用print语句时,它会显示正确迭代的数组。

这是数组:

 var restaurants = ["Truckyard", "EasySlider", "Revolver", "Armoury"]

这是cellForRowAtIndexPath:

  func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = restaurantTableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath) as! restaurantCell

    for rest in restaurants {

      cell.restaurantImageView.image = UIImage(named: rest)
      cell.restaurantNameLabel.text = rest

    }

    return cell
  }

2 个答案:

答案 0 :(得分:2)

每行调用一次cellForIndexPath。试试这个:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = restaurantTableView.dequeueReusableCell(withIdentifier: reuseIdentifier, for: indexPath) as! restaurantCell

    cell.restaurantImageView.image = UIImage(named: restaurants[indexPath.row])
    cell.restaurantNameLabel.text = restaurants[indexPath.row]

    return cell
}

答案 1 :(得分:0)

无需循环。 cellForRowAt为您提供indexPath。检查indexPath.row属性。如果您只有一个部分,则该行是您要访问的阵列中项目的索引。你基本上是为每一行迭代你的数组,这将不可避免地将你的最后一项设置为标题/图像