Я хочу сделать расширяемую ячейку табличного представления с заголовком. У меня есть модель для моих данных. Я добавил переменную isExpanded bool для определенной ситуации в ячейке, поэтому функция numberOfRowsInSection выдала мне ошибку индекса. У меня есть логика, которая имеет переменную isExpanded, но она не работает правильно. Как я могу это исправить? Вот мой код:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if section == 0 {
if self.userAdressDict[0].isExpanded == true {
return 0
}
if self.userAdressDict[0].isExpanded == false {
return self.userAdressDict.count
}
}
if section == 1 {
return self.userAdressDictForTeslim.count
}
return 1
}
Вот мой код представления заголовка:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if section == 0 {
let button = UIButton(type: .system)
button.setTitle("Kapat", for: .normal)
button.setTitleColor(.black, for: .normal)
button.backgroundColor = .lightGray
button.titleLabel!.font = UIFont.boldSystemFont(ofSize: 14)
button.addTarget(self, action: #selector(handleExpandCloseForAlim(sender:)), for: .touchUpInside)
return button
}
if section == 1 {
let button = UIButton(type: .system)
button.setTitle("Kapat", for: .normal)
button.setTitleColor(.black, for: .normal)
button.backgroundColor = .lightGray
button.titleLabel!.font = UIFont.boldSystemFont(ofSize: 14)
button.addTarget(self, action: #selector(handleExpandCloseForTeslim), for: .touchUpInside)
return button
}
else{
return nil
}
}
А вот функция действия кнопки:
@objc func handleExpandCloseForAlim(sender: UIButton) {
var indexPaths = [IndexPath]()
for row in self.userAdressDict.indices{
print(0 , row)
let indexPath = IndexPath(row: row, section: 0)
indexPaths.append(indexPath)
}
let indexPath = IndexPath(row: (sender.tag), section: 0)
let adresso = self.userAdressDict[indexPath.row]
if adresso.isExpanded == true {
tableView.deleteRows(at: indexPaths , with: .fade)
}
if adresso.isExpanded == false {
tableView.insertRows(at: indexPaths, with: .fade)
}
//self.userAdressDict.removeAll()
}
Я могу сделать процесс удаления с помощью removeAll() код. Но я хочу вставить строки также, так что это не правильный способ сделать это. (userAdressDict - моя модель, в которой хранятся данные). В handleExpandCloseForAlim отправитель функции для достижения - переменная isExpanded. Наконец, у меня проблема с частью numberOfRowsInSection.