Изменить высоту строки для определенного индекса в разделе

Я устанавливал высоту ячеек для своего представления таблицы с помощью

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

    switch indexPath.section {
    case 0:
        return 100
    case 1:
        tableView.estimatedRowHeight = 100
        return  UITableViewAutomaticDimension
    default:
        return 0
    }
}

При этом для всех строк в разделе 1 высота строки установлена ​​на 100. Теперь я хотел бы изменить высоту строки конкретной строки на 0 (т.е. сделать ее скрытой) при нажатии кнопки.

Я пытался:

tableView.cellForRow(at: IndexPath(item: selectedIndex, section: 1))?.isHidden

Хотя ячейка скрыта, у меня остается пустая ячейка, занимающая высоту строки.

Поэтому я думаю, что мне следует изменить высоту строки на 0.

P.S. Я знаю, что этого можно достичь, удалив конкретную строку из модели и используя deleteRows (в indexPaths: [IndexPath], с анимацией: UITableView.RowAnimation). Но я не хочу менять модель. Как это может быть сделано?

в методе func tableView (_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat, верните 0,00001 для вашей конкретной ячейки, потому что возвращение 0 даст ячейке высоту по умолчанию

marc 12.07.2018 08:27

Почему бы вам не использовать только UITableViewAutomaticDimension и поиграть с constraints, чтобы изменить высоту всех ячеек в соответствии с subviews в ячейке.

Amit 12.07.2018 08:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
74
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте флажок, чтобы проверить, нажали ли вы кнопку. Затем перезагрузите таблицу после нажатия кнопки.

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return indexPath.section == 0 ? buttonClicked && indexPath.row == 0 ? CGFloat.leastNormalMagnitude : 100 : UITableViewAutomaticDimension
}

Более длинная, более читаемая версия: -

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {

switch indexPath.section {
case 0:
    if buttonClicked && indexPath.row = rowIndex //index of required row which you can find out and store in a variable wherever necessary {
        return CGFloat.leastNormalMagnitude
    }
    return 100
case 1:
    tableView.estimatedRowHeight = 100
    return  UITableViewAutomaticDimension
default:
    return 0
}
}

При этом все ячейки в этом разделе получат наименьшую высоту NormalMagnitude. Но хочу только первую ячейку.

Sujal 12.07.2018 08:37

@ Anbu.karthik, я бы не стал жертвовать удобочитаемостью ради меньшего количества кода.

Rakesha Shastri 12.07.2018 08:44

Я предпочитаю длинную версию.

Sujal 12.07.2018 09:41

Другие вопросы по теме