ios - 快速表格视图单元格不允许我使用 indexPath.row
问题描述
我正在尝试将数据填充到表格视图内的单元格中。我创建了一个 selectedPlanData var,它被初始化为一个对象,其中包含数据。该对象具有诸如“名称”和“事件位置”之类的属性。在“cellForRowAt”内部时会出现问题。它不允许我将 [indexPath.row] 添加到我正在创建的单元格中,这反过来又不会正确填充单元格。
例如 - 我从第一个 cell.nameLbl.text 调用中删除了 indexPath.row - 反过来,表格视图中的每个名称标签都是相同的。这是一段代码
var chosenPlanData = ChosenPlan()
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "individualPlansCell") as? PlanitsHomeViewCell else { return UITableViewCell() }
cell.nameLbl.text = chosenPlanData.nameOfEvent[indexPath.row] // error Cannot assign value of type 'Character' to type 'String?'
cell.dateAndTimeLbl.text = chosenPlanData.eventStartsAt[indexPath.row] as? String // error 'subscript' is unavailable: cannot subscript String with an Int, see the documentation comment for discussion
cell.nameLbl.text = chosenPlanData.nameOfEvent // This works - but every single cell has the same nameLbl though
return cell
}
// Here is the call back where i initialize the value for chosenPlanData
let EventbriteTVC = segue.destination as! EventbriteTableView
EventbriteTVC.callbackChosePlan = { result in
DispatchQueue.main.async {
self.individualPlanitsTableView.reloadData()
}
self.chosenPlanData = result
}
导入基础导入 UIKit
类选择计划{
var nameOfEvent : String = ""
var eventStartsAt : String = ""
var eventLocationIs : String = ""
var eventURL : String = ""
var imageForPlan : String?
convenience init( eventName: String, eventTime: String, eventLocation: String, eventImage: String){
self.init()
self.nameOfEvent = eventName
self.eventStartsAt = eventTime
self.eventLocationIs = eventLocation
//self.eventURL = eventLink
self.imageForPlan = eventImage
//eventLink: String,
}
}
解决方案
您的chosenPlanData
变量是单个实例ChosenPlan
- 您不能为单个实例下标。
它需要是一个数组ChosenPlan
:
var chosenPlanData = [ChosenPlan]()
然后你可以索引到这个数组:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "individualPlansCell") as? PlanitsHomeViewCell else { return UITableViewCell() }
cell.nameLbl.text = chosenPlanData[indexPath.row].nameOfEvent
cell.dateAndTimeLbl.text = chosenPlanData[indexPath.row].eventStartsAt
推荐阅读
- sql - SQL Server 游标从不同的表中提取数据并合并相同的行
- twitter-bootstrap - 单击下拉菜单时切换箭头(Bootstrap 4)
- php - 无法使用 password_verify 验证密码
- dictionary - 我们如何将一对 (setOf(item), Double) 拆分为具有所有可能组合的对 (item,double) ?
- spring-batch - 在 Spring Batch 应用程序中使用项目处理器中的作业参数之一
- python - 移动不重叠的列,使它们重叠/对齐
- laravel - 如何在 Laravel 中使用强制转换访问存储为 JSON 的数据?
- apache - 通过 WSGI Apache sudo 命令挂载的驱动器在主机上不可见
- python - pyrevit 中的 FilteredElementCollector 出现意外错误
- lua - 扩展 Notepad++ 中的 Lua 语言设置以对 `[[ ... ]]` 中包含的内容进行拼写检查