У меня есть TableView, который постоянно меняется (ячейки вставлены и удалены) внутри ScrollView. Я отключил прокрутку для TableView, потому что над TableView есть MapView, и я хочу прокрутить весь View, а не только TableView, когда пользователь прокручивается вверх. Поскольку ячейки постоянно вставляются и удаляются в TableView, высота для TableView не будет фиксироваться в течение всего времени работы приложения.Установите высоту TableView как сумму высот своих ячеек (Swift 2.0)
Я пытаюсь постоянно установить высоту TableView, чтобы соответствовать высоте суммы содержания внутри, делая,
func someFunc() {
// call viewDidAppear to update TableView
viewDidAppear(true)
// Calculate the size of the ScrollView
var y: CGFloat = 10
y = mapView.bounds.size.height + tableView.bounds.size.height + 10
var sz = scrollView.bounds.size
sz.height = y
scrollView.contentSize = sz
}
// Update the TableView on main thread
override viewDidAppear(animated: Bool) {
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.tableView.reloadData()
var frame: CGRect = self.tableView.frame
frame.size.height = self.tableView.contentSize.height
self.tableView.bounds.size.height = frame.size.height
})
}
Однако tableView.bounds.size.height не обновляясь до новой высоты контента. На самом деле он обновляет иногда, может быть, раз в несколько звонков. Я почти уверен, что это потому, что dispatch_asyn() - это асинхронный метод. Поэтому мне может понадобиться вернуться в методе, чтобы решить эту проблему, но я не уверен, как это сделать.
Выполняю ли я это правильно, чтобы выполнить то, что мне нужно? Есть лучший способ сделать это? Любая помощь приветствуется.