Сделайте UITableView Header автоматически изменяющего размер, когда пользователь вводит в ячейки - PullRequest
0 голосов
/ 26 апреля 2018

Этот пользовательский интерфейс позволяет пользователям вводить ответы в пробелах (TableViewCells), а в заголовке будет просматриваться окончательный ответ с пробелами, заполненными в исходном вопросе.

Например, запрос вопроса здесь должен быть "Theэлементы, из которых состоят молекулы воды: (_____) и (_____). "

Но пользовательский интерфейс показывает:

enter image description here

Как видите, представление заголовка усекает содержимое.Я хочу, чтобы представление изменило размеры, чтобы соответствовать любому тексту, даже когда пользователь печатает, и ext становится длиннее.Вот код TableViewController для создания представления заголовка:

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let cell = tableView.dequeueReusableCell(withIdentifier: "OPCell") as! WhatTheBlankOriginalPostTableViewCell

    cell.OriginalPostLabel.text = WhatTheBlankUtility.PostText(post: (post?.content.text)!)
    opCell = cell

    let view = UIView()
    view.addSubview(cell)

    let margins = view.layoutMarginsGuide

    cell.leadingAnchor.constraint(equalTo: margins.leadingAnchor, constant: 8).isActive = true
    cell.trailingAnchor.constraint(equalTo: margins.trailingAnchor, constant: 8).isActive = true
    cell.topAnchor.constraint(equalTo: margins.topAnchor, constant: 16).isActive = true
    cell.bottomAnchor.constraint(equalTo: margins.bottomAnchor, constant: 16).isActive = true

    return view;
}

Обратите внимание, что я обернул представление заголовка (изначально ячейка, с автоматическим изменением размера и работало нормально! Но всякий раз, когда он обновлял размер - я использовал

Tableview.beginUpdates()
Tableview.endUpdates()

весь табличный вид будет дрожать, если вы будете слишком далеко прокручиваться вниз, и представление заголовка просто исчезнет, ​​если вы прокрутите слишком далеко вниз, чтобы сказать пустое 20. Теория, которую я видел, состояла в том, что я возвратил TableViewCell ине UITableViewHeaderFooterView, когда табличное представление больше не думает, что ячейка видима, она уничтожается) в представлении.Это должно решить проблему, которую я упомянул в скобках.Прости мою плохую организацию мыслей.

Я также попытался изменить размер представления заголовка, закрепив ячейку внутри границ представления в коде (автоматические ограничения).Не повезло - без изменений размера представления заголовка, когда пользователь печатает и строка становится длиннее.

1 Ответ

0 голосов
/ 29 апреля 2018

Если вы создадите новое представление и добавите ограничения в viewForHeaderInSection, это приведет к странному поведению.Для начала, он будет добавлять новые ограничения каждый раз, когда вызывается viewForHeaderInSection.Поскольку ограничения не удаляются перед добавлением в этот метод, это приведет к повторению ограничений, и я могу только представить, какой это будет кошмар.Простое решение - просто вернуть cell.contentView в вашем методе viewForHeaderInSection.

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