2016-10-11 2 views
1

Я хочу создать что-то вроде автозаполнения textview в android, что означает tableview в оверлейном представлении, чтобы отобразить результат поиска. Для этого я сделал представление (требуется, чтобы показать конкретный фон), который содержит tableview. Это работает нормально, но когда tableview имеет только 1 строку, tableview не изменяет размер своей высоты.Измените размер таблицы в последней строке в swift

я пишу

tableView.tableFooterView = UIView() 

, но это только подавить избыток сепаратора, а не изменить высоту.

Не могли бы вы помочь мне, пожалуйста?

enter image description hereenter image description here

+0

Показать свой экран –

ответ

0

Вы должны обновить кадр Tableview вручную. Если вы используете autolayout, добавьте IBOutlet по высоте Tableview в:

@IBOutlet weak var heightConstraint: NSLayoutConstraint! 

Я предполагаю, что высота Tableview ограничена с некоторым фиксированным значением. Если это зависит от высоты экрана, просто замените maxTableViewHeight на вычисленную переменную.

let maxTableViewHeight = CGFloat(300) 

Создать метод обновления высоты таблицыView. Он будет убедиться, что Tableview изменяется, если его высота содержание меньше MaxHeight:

func updateTableViewFrame() { 
    autocompleteTableView.layoutIfNeeded() //to make sure you have updated contentSize 
    let height = autocompleteTableView.contentSize.height 
    heightConstraint.constant = min(height, maxTableViewHeight) 
    view.layoutIfNeeded() 
} 

Теперь все, что вам нужно сделать, это вызвать этот метод всякий раз, когда ваши обновления DataSource. В вашем случае это должно быть изменено значение ввода пользователя.

+0

Спасибо за ваш ответ. Я уже нашел подобный, но на самом деле это не работает, проблема заключалась в том, чтобы определить реальный размер табличного представления после перезагрузки. –

+0

Во всяком случае, я поменял способ сделать и полностью подавить «автозаполнение текста», –

Смежные вопросы