如何在索引路径的行中显示单元格中的数据模型内容?

Posted

技术标签:

【中文标题】如何在索引路径的行中显示单元格中的数据模型内容?【英文标题】:How to Display data model content in cell for row at indexpath? 【发布时间】:2017-03-12 14:09:53 【问题描述】:

enter image description herehttps://i.stack.imgur.com/pRZu5.png 您好我正在尝试在 tableview 中显示特定对象的名称和 pointsWorth。但是 xcode 回答missionTitleLabel 不能在missionCell 上使用。是否可以显示我创建的对象的信息?

感谢我能得到的任何帮助!

这是我的代码: MasterViewController.swift:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "MissionCell", for: indexPath)
    let event = self.fetchedResultsController.object(at: indexPath)
    self.configureCell(cell, withEvent: event)

    let mission = missions[indexPath.row]
    MissionCell.missionTitleLabel?.text = mission

    return cell   

示例数据模型:

枚举类别枚举 案例一 案例b 案例c 案例d 公开课任务

var name: String
var pointsWorth: Int
var colorTheme: UIColor
var description: String
var category: CategoryEnum

init(name: String, pointsWorth: Int, colorTheme: UIColor, description: String, category: CategoryEnum) 
    self.name = name
    self.pointsWorth = pointsWorth
    self.colorTheme = colorTheme
    self.description = description
    self.category = category

letmission1 = Mission(name: "a", pointsWorth: 50, colorTheme: .blue, description: "a is the first letter in the alphabet", category:.a)

letmission2 = Mission(name: "b", pointsWorth: 60, colorTheme: .red, description: "b is the second letter in the alphabet", category:.b)

var 任务:[任务] = [任务 1,任务 2]

MissionCell.swift:

import UIKit

类 MissionCell: UITableViewCell

@IBOutlet weak var missionTitleLabel: UILabel!
@IBOutlet weak var missionPointLabel: UILabel!

override func awakeFromNib() 
    super.awakeFromNib()
    // Initialization code


override func setSelected(_ selected: Bool, animated: Bool) 
    super.setSelected(selected, animated: animated)


【问题讨论】:

mission 的类型是什么?是字符串吗? 是的,它是一个字符串 【参考方案1】:

这里你应该使用cell 变量作为MissionCell

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
   let cell = tableView.dequeueReusableCell(withIdentifier: "MissionCell", for: indexPath) as! MissionCell
   let event = self.fetchedResultsController.object(at: indexPath)
   self.configureCell(cell, withEvent: event)

   let mission = missions[indexPath.row]
   cell.missionTitleLabel?.text = mission.name

   return cell   

希望对您有所帮助。

【讨论】:

谢谢!您的代码删除了错误,但当我运行应用程序时,名称未显示在表格视图中。 你能在override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 中调试吗?代码在这里触发了吗? 嘿,你能检查一下你的故事板吗?您应该像这样将delegatedatasource 链接到您的视图控制器i1380.photobucket.com/albums/ah191/amar_11s/Amarendrasingh/… 我的委托和数据源似乎链接到我的视图控制器 [2]:i.stack.imgur.com/YkmG6.png 当我设置断点时,我可以看到以下方法没有运行:为 indexpath configureView + dataModel 中的行准备 segue Cell:Datamodel.swift【参考方案2】:

你应该像这样分配值:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = tableView.dequeueReusableCell(withIdentifier: "MissionCell", for: indexPath) as! MissionCell
    let event = self.fetchedResultsController.object(at: indexPath)
    self.configureCell(cell, withEvent: event)

    let mission = missions[indexPath.row]
    cell.missionTitleLabel?.text = mission.name


    return cell   

请记住,只有在您确定存在一种单元类型时才使用强制转换到 MissionCell,否则您会崩溃。 考虑:

if let cell = cell as? MissionCell 
  cell.missionTitleLabel?.text = mission.name


【讨论】:

感谢您的回答!执行此操作后,我收到以下消息:无法将 Mission 类型的值分配给 String 类型?有什么方法可以访问对象名称属性吗? 你应该使用mission.name 感谢 orxelm!这消除了错误,但是当我运行应用程序时,名称没有显示在 tableview 中。 可以分享截图吗?您是否看到正确数量的单元格,但它们只是空的?也许您没有将标签连接到单元格标签? 一定是出了点问题,因为我第二次运行应用程序时收到了一个 sigbart 原因:'无法使具有标识符 MissionCell 的单元格出列 - 必须为标识符注册一个 nib 或一个类或连接一个故事板中的原型单元格

以上是关于如何在索引路径的行中显示单元格中的数据模型内容?的主要内容,如果未能解决你的问题,请参考以下文章

根据“如果单元格中的字符串”条件删除熊猫列中的行

在前 4 个单元格中的至少一个单元格中计算带有“x”的行数

根据获得的当前单元格的索引路径,自定义单元格中的按钮单击功能

如何在同一原型单元格中添加 XYPieChart 和 PNBarChart

如何在二维数组的每个单元格中找到具有相同数值的行?

表格视图单元格中的图像对齐不正确