как сделать так, чтобы ячейки таблицы расширялись и сворачивались - PullRequest
0 голосов
/ 23 января 2019

У меня есть три ячейки табличного представления, ячейка срока выполнения должна увеличиться до 200, если она выбрана, и до 44 (по умолчанию), если она не выбрана. По какой-то причине он не будет расширяться.

Я не могу сделать это в AutoLayout, так как он должен измениться, поэтому я попытался использовать оператор switch, и когда он находится на определенном пути индекса, он должен расширяться, однако он не работал.

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    let normalCellHeight = CGFloat(44)
    let largeCellHeight = CGFloat(200)

    switch(indexPath) {
    case [1,0]: // Due Date Cell
        return isPickerHidden ? normalCellHeight : largeCellHeight

    case [2,0]: // Notes Cell
        return largeCellHeight

    default: return normalCellHeight

    }
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    switch(indexPath) {
    case [2,0]:
        isPickerHidden = !isPickerHidden

        dueDateLabel.textColor = isPickerHidden ? .black : tableView.tintColor

        tableView.beginUpdates()
        tableView.endUpdates()

    default: break
    }
}

Ожидаемый результат: Прикосновение к ячейке даты выполнения, расширение ячейки для отображения средства выбора даты

Фактические результаты: Ячейка подсвечивается, но не расширяется.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Попробуйте перезагрузить ячейку на didSelectRow внутри beginUpdates и endUpdates. Посмотрите на пример кода ниже. Выберите анимацию строки в соответствии с вашими потребностями.

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch(indexPath) {
case [2,0]:
    isPickerHidden = !isPickerHidden

    dueDateLabel.textColor = isPickerHidden ? .black : tableView.tintColor

    tableView.beginUpdates()
    tableView.reloadRows(at: [indexPath], with: .none)
    tableView.endUpdates()

default: break
}
}
0 голосов
/ 23 января 2019

Обновить ячейку в didSelectRowAt делегата

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        switch(indexPath) {
        case [2,0]:
            isPickerHidden = !isPickerHidden

            dueDateLabel.textColor = isPickerHidden ? .black : tableView.tintColor

            tableView.reloadRows(at: [indexPath], with: .top)

            default: break
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...