Быстрый набор высоты таблицы

#swift #uitableview #height #swift3 #contentsize

#быстрый #uitableview #высота #swift3 #размер содержимого

Вопрос:

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

Я думаю, что я должен работать с:

 tableView.contentSize.height = 2000
  

Но либо я не знаю, куда мне ее поместить (должен ли я повторно загрузить данные для таблицы после?), Либо у меня неправильное представление о том, как это сделать.

Кто-нибудь может помочь?

РЕДАКТИРОВАТЬ: у меня есть это представление внутри табличного представления, которое в некоторых случаях может быть выше таблицы, и в этом случае я не могу прокрутить все это. Вот почему мне нужно изменить высоту прокрутки таблицы.

На iOS 10 это работает так, как задумано, но я должен исправить это и для iOS 8 и 9.

Ответ №1:

Это было протестировано и работает:

 override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)
    tableView.contentSize.height = 2000
}
  

Пример:
введите описание изображения здесь

Комментарии:

1. Что, если мне нужно это сделать, когда что-то меняется после загрузки экрана, например, когда пользователь нажимает кнопку?

2. Вы можете просто вызвать tableView.contentSize.height = 2000 . Вам не нужно вызывать reloadData() , если данные фактически не изменились. В этом случае вы хотели бы вызвать reloadData() , а затем установить contentSize .

3. Не работает на iOS 9, когда в табличном представлении нет строк… Есть еще идеи?

4. @asheyla это очень странно. Я тестировал на устройстве под управлением iOS 9, и оно работает нормально. Он также отлично работает с симулятором. Можете ли вы опубликовать больше о своей реализации? Я обновил свой ответ примером.

5. спасибо, что нашли время, чтобы показать мне пример. Я подумал, что TableView.tableFooterView = UIView() может быть причиной того, что ваше решение не работает для меня, поэтому я удалил его, и все равно оно работает не так, как предполагалось. Я вижу, вы объявили reloadContent() . Вы вызываете это где-нибудь?

Ответ №2:

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

 tableView.reloadData()
tableView.layoutIfNeeded()

var contentSizeTemp = tableView.contentSize
contentSizeTemp.height = menuViewHeight.constant 
tableView.contentSize = contentSizeTemp
  

Ответ №3:

Как насчет установки ограничений для представления таблицы? Или это другой случай, когда они не подходят? В этом случае таблица будет иметь высоту, равную высоте экрана, независимо от того, сколько в ней строк. введите описание изображения здесь

Комментарии:

1. Я отредактировал свой вопрос, надеюсь, теперь он дает больше объяснений. Меня интересует высота прокрутки, высота таблицы в порядке, она находится там, где должна, и занимает столько экрана, сколько мне нужно.