TableViewCell未在ViewController中显示

时间:2018-04-18 11:02:42

标签: ios swift uitableview

我在构建的应用程序中突然遇到一个非常奇怪的问题 - 我的tableView中的tableViewCells根本没有出现,即使tableView方法正在触发(我已经开始)使用其中的print语句检查)。该应用程序不会崩溃,但表格视图单元格中的所有内容都不会再显示,即使所有数据变量都已更新。

以下是我使用过的tableView方法:

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    let count = selectedValidInputs.count
    return count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = carbonDetailsTable.dequeueReusableCell(withIdentifier: "CarbonDetailsCell") as! CarbonTableViewCell

    cell.itemName.text = selectedValidInputs[indexPath.row]
    cell.carbonValue.text = carbonValues[indexPath.row]
    cell.tip.text = tips[indexPath.row]
    cell.hashtag.text = tags[indexPath.row]

    return cell
}

涵盖可能会提出的一些问题

  1. 我有一个符合UIViewController,UITableViewDelegate,UITableViewDataSource的Controller,所以不需要覆盖方法
  2. 我确保CarbonTableViewCell(自定义UITableViewCell类)的标识符与.dequeueReusableCell方法中使用的标识符相匹配
  3. 我已经验证了从故事板到代码的所有变量连接
  4. 我没有设置tableView中的部分数量,但代码已经工作了一个月而没有这个,所以不要认为问题与此相关。
  5. 我对完全编码非常陌生,所以非常感谢任何帮助和反馈!

    请注意,该页面只是空的。即使是' cellBg'下面的变量,只是一个视图,有一个背景颜色,没有显示,也没有应用程序崩溃 - 这有点奇怪。

    编辑:由于每个人都在建议,因此请在此处进行更新。在打印结果时,我得到所有值:当输入值为" apple"例如,显示所有值:

    count: 1
    selectedValidInputs: ["apple (1 kg)"] 
    carbonValues: ["550 g CO2, same as 22 plastic bags"] 
    tips: ["Avoid wastage that adds unnecessary methane to the air with decomposition!"] 
    tags: ["#very-low-carbon-impact"]
    

    When I add carbonDetailsTable.register(CarbonTableViewCell.self, forCellReuseIdentifier: "CarbonDetailsCell") to viewDidLoad(), I get a crash with the msg shown in attached image

3 个答案:

答案 0 :(得分:1)

部分数等于0,'selectedValidInputs'数组为空,或者您没有放置所有使用值初始化它的代码。

答案 1 :(得分:0)

在CarbonDetailsViewController中打印您在tableview中传递的数组,并且检查数据与您在之前的viewcontroller中传递的数据完全相同。

答案 2 :(得分:0)

1)尝试实施

func numberOfSections(in tableView: UITableView) -> Int {
 return 1
}

2)尝试实施

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
   return 40.0
}

并对estimatedRowHeightrowHeight设置者进行评论,以确认该单元格的自动布局是否未损坏且表格视图无法确定行高。 (estimatedRowHeight基本上只用于tableView指标栏并估计tableView的内容大小)