У меня есть табличное представление, которое считывает информацию из массива массивов и отображает ее. Табличное представление имеет сворачиваемые ячейки для подкатегорий. Я не могу понять, как сделать так, чтобы мой текст TableView соответствовал ячейке-прототипу, которую я создал. Я создал файл .swift для ячейки с именем «autoClaimCell», идентификатор ячейки также «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
}
}
}
Кроме того, как мне сделать так, чтобы список, отображаемый при расширении ячейки, соответствовал другому прототипу ячейки в процессе?
tableViewCell
класса? Или 2 идентификатора? - person nighttalker   schedule 21.03.2020