UIView не обновляется после изменения константы NSLayoutConstraint - PullRequest
0 голосов
/ 18 мая 2018

Я хочу изменить высоту UITableView в зависимости от взаимодействия пользователя с кнопкой.Когда пользователь нажимает на кнопку, UITableView расширяется и нажимает на ту же кнопку. Высота UITableView уменьшается только для отображения 1-й строки.Ниже приведен мой код

    tblFaults?.setNeedsUpdateConstraints()
    self.view.setNeedsUpdateConstraints()

    if (currentNumber == 1)
    {
        currentNumber = 2
        var newFrame = tblFaults?.frame
        newFrame?.size.height += 67;//tried to change frame as well
        tblFaults?.frame = newFrame!
        faultViewHeight?.constant = 115 
        //faultView height is  tableview height constraint
    }
    else
    {
        currentNumber = 1
        var newFrame = tblFaults?.frame
        newFrame?.size.height -= 67;
        tblFaults?.frame = newFrame!
         faultViewHeight?.constant = 48
    }
    tblFaults?.reloadData()
    //self.view.setNeedsLayout()
    //self.view.setNeedsDisplay()

Я попробовал setNeedsDisplay, setNeedsLayout, а также layoutSubviews () после кода.Но представление не обновляется сразу после нажатия кнопки, а обновляется только после следующего взаимодействия с пользователем (например, изменение прокрутки и т. Д.)

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Спасибо всем.На самом деле достаточно было только изменение значения константы ограничения и tableview.reloadData ().БОЛЬШАЯ ошибка, которую я сделал, я проверял выполнение на симуляторе.Я попробовал это на устройстве, и он работал отлично.На симуляторе я столкнулся с проблемой даже после попытки self.view.layoutIfNeeded ().Я до сих пор не знаю, почему это поведение на симуляторе, а не на устройстве.Но в конечном итоге приложение должно работать на устройстве и работать там.:) Спасибо всем.

0 голосов
/ 18 мая 2018

Попробуйте это:

  faultViewHeight?.constant = 48
  tblFaults.layoutIfNeeded() // you need to call this method
...