У меня есть кнопка и некоторое содержимое в ячейке.Теперь, когда я нажимаю кнопку, я хочу, чтобы ячейка расширялась и сворачивалась, что прекрасно работает для ячейки, чья кнопка нажата.Теперь возникает проблема: когда я расширил одну ячейку и попытался расширить другую, сохранив при этом первую ячейку, то закрыл сначала первую ячейку, а затем расширил вторую ячейку.Я хочу развернуть и свернуть ячейки параллельно и могу свернуть любую ячейку, а не свернуть сначала.Я меняю высоту ячейки по нажатию кнопки.Это мой код для расширения и свертывания,
extension ActiveConsultantDetailVC : UITableViewDelegate, UITableViewDataSource
{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.row == 0
{
return 100
}
else if indexPath.row == 1
{
return 80
}
else if indexPath.row == 2
{
if (flag == true && indexPath.row == indexValue)
{
return UITableView.automaticDimension
}
else
{
return 40
}
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
else if indexPath.row == 2
{
let cell = consultantTableView.dequeueReusableCell(withIdentifier: "descriptionCell", for: indexPath) as! ConsultDescriptionTVC
indexDescription = indexPath
cell.expandBtn.addTarget(self, action: #selector(expandDescriptionView), for: .touchUpInside )
cell.selectionStyle = .none
return cell
}
}
@objc func expandDescriptionView()
{
let cell = consultantTableView.cellForRow(at: indexDescription) as! ConsultDescriptionTVC
indexValue = indexDescription.row
if flag && indexValue == indexDescription.row{
//statesDetailTableView.beginUpdates()
self.consultantTableView.reloadRows(at: [indexDescription], with: UITableView.RowAnimation.none)
// statesDetailTableView.endUpdates()
cell.expandBtn.setTitle("-", for: .normal)
flag = false
}
else{
//statesDetailTableView.beginUpdates()
self.consultantTableView.reloadRows(at: [indexDescription], with: UITableView.RowAnimation.none)
// statesDetailTableView.endUpdates()
cell.expandBtn.setTitle("+", for: .normal)
flag = true
}
}
Как вы можете видеть, когда я нажимаю на него, вызывается функция, которая затем увеличивает высоту ячейки.Мой пользовательский интерфейс выглядит так,