Расширяемая высота UITableView после вставки / удаления ячеек - PullRequest
0 голосов
/ 08 июня 2019

У меня есть стек просмотра.Я пытаюсь вставить TableView в качестве одного из его упорядоченных подпредставлений.Я хочу, чтобы высота моего табличного представления была автоматической в ​​зависимости от количества дочерних ячеек.После многих исследований, особенно с ответами в StackOverflow, я обнаружил, что мне пришлось «аннулировать» «intrinsicContentSize» представления таблицы, когда в представлении таблицы размещаются подпредставления.Хотя, это все еще не работает:

Вот мой класс просмотра таблицы:

class TableView : UITableView {

    override var intrinsicContentSize: CGSize {
        get {
            (BP1) return CGSize(width: CGFloat.greatestFiniteMagnitude, height: contentSize.height)
        }
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        //(***)
        (BP2) invalidateIntrinsicContentSize()

    }
}

Хотя проблема в том, что при запуске приложения tableView принимает высоту 44 * numberOfRow(44 кажется высотой по умолчанию для UITableView).ContentSize.height не учитывается.

Я пытался установить точки останова в (BP) (в приведенном выше коде): после нескольких входов в 2 функции программа, наконец, переходит в (BP1), имеет здесь правильный contentSize.height, установите егов intrinsicContentSize, затем переходит к layoutSubview (BreakPoint 2).

Проблема в том, что в данный момент, хотя intrinsicContentSize находится прямо на входе layoutSubview, мой tableview.frame.height по-прежнему равен 44 * numberofrow, в BP2 (после super.layoutSubviews()) .Я исключаю, что super.layoutSubviews() учитывает новый intrinsicContentSize, который был только что установлен на правильное значение, и обновляет tableView.frame.height до него впоследствии.

Наконец, я сделал, чтобы поместить эту строкуat (***):

frame = CGRect(x:frame.origin.x, y: frame.origin.y, width:10000, height: contentSize.height)

При этом все работает, и кадр обновляется до нужного значения.Хотя я не понимаю, почему мое правильное внутреннее содержание contentSize не учитывается в процессе автоматического размещения в super.layoutSubviews().

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