在 guard 语句中自定义 UITableViewCell 文本
Customize the UITableViewCell text inside a guard statement
我有一个表视图,它从数组的数组中读取信息并显示它。 tableview 具有用于子类别的可折叠单元格。我似乎无法弄清楚如何使我的 TableView 文本符合我创建的原型单元格。我为名为 "autoClaimCell" 的单元格创建了一个 .swift 文件,单元格标识符也是 "autoClaimCell",并且该单元格内的标签称为 "autoClaimCellLabel"。在我做一个守卫声明之前,它工作得很好,因为它允许我在声明的末尾放置 "as! autoClaimCell",然后访问该文件的标签,但现在因为我有了守卫声明,它不会让我把 "as! autoClaimCell" 放在那里的任何地方。
这是我的代码:
func numberOfSections(in tableView: UITableView) -> Int {
return tableViewData.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableViewData[section].opened == true {
return tableViewData[section].sectionData.count + 1
} else {
return 1
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// let cell = tableView.dequeueReusableCell(withIdentifier: "autoClaimCell", for: indexPath) as! autoClaimCell
// cell.autoClaimCellLabel?.text = areaCategories[indexPath.row]
// return cell
let dataIndex = indexPath.row - 1
if indexPath.row == 0 {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "autoClaimCell") else {return UITableViewCell()}
cell.textLabel?.text = tableViewData[indexPath.section].title
return cell
} else {
//Use different call indentifier if needed
guard let cell = tableView.dequeueReusableCell(withIdentifier: "autoClaimCell") else {return UITableViewCell()}
cell.textLabel?.text = tableViewData[indexPath.section].sectionData[dataIndex]
return cell
}
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == 0 {
if tableViewData[indexPath.section].opened == true {
tableViewData[indexPath.section].opened = false
let sections = IndexSet.init(integer: indexPath.section)
tableView.reloadSections(sections, with: .none) // play around with animations
} else {
tableViewData[indexPath.section].opened = true
let sections = IndexSet.init(integer: indexPath.section)
tableView.reloadSections(sections, with: .none) // play around with animations
}
}
}
此外,如何使展开单元格时显示的列表符合流程中的不同单元格原型?
guard-let 语句中的表达式的计算结果应为可选。用作!将强制解包可选的,这将成功或产生错误但永远不会 return 可选。
只需替换为!作为?
至于符合不同的细胞原型。你需要用你的数据模型来管理它。您已经为索引行 0 设置了不同的条件。您可以为 if expanded 等添加条件。
我有一个表视图,它从数组的数组中读取信息并显示它。 tableview 具有用于子类别的可折叠单元格。我似乎无法弄清楚如何使我的 TableView 文本符合我创建的原型单元格。我为名为 "autoClaimCell" 的单元格创建了一个 .swift 文件,单元格标识符也是 "autoClaimCell",并且该单元格内的标签称为 "autoClaimCellLabel"。在我做一个守卫声明之前,它工作得很好,因为它允许我在声明的末尾放置 "as! autoClaimCell",然后访问该文件的标签,但现在因为我有了守卫声明,它不会让我把 "as! autoClaimCell" 放在那里的任何地方。
这是我的代码:
func numberOfSections(in tableView: UITableView) -> Int {
return tableViewData.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableViewData[section].opened == true {
return tableViewData[section].sectionData.count + 1
} else {
return 1
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// let cell = tableView.dequeueReusableCell(withIdentifier: "autoClaimCell", for: indexPath) as! autoClaimCell
// cell.autoClaimCellLabel?.text = areaCategories[indexPath.row]
// return cell
let dataIndex = indexPath.row - 1
if indexPath.row == 0 {
guard let cell = tableView.dequeueReusableCell(withIdentifier: "autoClaimCell") else {return UITableViewCell()}
cell.textLabel?.text = tableViewData[indexPath.section].title
return cell
} else {
//Use different call indentifier if needed
guard let cell = tableView.dequeueReusableCell(withIdentifier: "autoClaimCell") else {return UITableViewCell()}
cell.textLabel?.text = tableViewData[indexPath.section].sectionData[dataIndex]
return cell
}
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if indexPath.row == 0 {
if tableViewData[indexPath.section].opened == true {
tableViewData[indexPath.section].opened = false
let sections = IndexSet.init(integer: indexPath.section)
tableView.reloadSections(sections, with: .none) // play around with animations
} else {
tableViewData[indexPath.section].opened = true
let sections = IndexSet.init(integer: indexPath.section)
tableView.reloadSections(sections, with: .none) // play around with animations
}
}
}
此外,如何使展开单元格时显示的列表符合流程中的不同单元格原型?
guard-let 语句中的表达式的计算结果应为可选。用作!将强制解包可选的,这将成功或产生错误但永远不会 return 可选。 只需替换为!作为?
至于符合不同的细胞原型。你需要用你的数据模型来管理它。您已经为索引行 0 设置了不同的条件。您可以为 if expanded 等添加条件。