Скрыть ячейку табличного представления и удалить пространство табличного представления
Я пытаюсь скрыть табличное представление и удалить пространство. Но табличное пространство просмотра не удалено. Когда пользователь впервые заходит на эту страницу, в табличном представлении нет данных, поэтому я пишу ishidden = true.table скрыто, но пробел не удаляется. Пользователь добавляет данные вручную, и появляется табличное представление. Это работает правильно после добавления данных. я пытаюсь
self.tableView.tableFooterView = UIView()
self.tableView.ishidden=true
приведенная выше таблица кодов скрыта, но не удаляет табличное пространство. Так как же убрать пространство скрытого табличного представления..
3 ответа
Вам необходимо установить ограничение высоты для табличного представления. Лучшее место для установки высоты - функция numberOfSectionsInTableView. Эта функция вызывается один раз при каждой перезагрузке данных.
//Assuming your data source
var dataSource: [String] = []
//connect this outlet to tableViewHeight Constraint
@IBOutlet var tableViewHeight: NSLayoutConstraint!
//connect this outlet to tableView
@IBOutlet var tableView: UITableView!
func numberOfSections(in tableView: UITableView) -> Int {
//need to check the data availability
if self.dataSource.count == 0{
//need to set the table height constraint to zero
self.tableViewHeight.constant = 0
self.tableView.isHidden = true
return 0
}
else {
//need to set the table height constraint to desired frame.
self.tableViewHeight.constant = self.view.frame.size.height //Assuming full screen.
self.tableView.isHidden = false
return 1
}
Если вы просто хотите скрыть tableView, просто установите для tableView.alpha значение 0 и отключите взаимодействие с tableView. Вы можете настроить представление без данных перед просмотром таблицы в иерархии раскадровок, а затем управлять альфа-значениями просмотра таблицы, чтобы скрыть и не отображать представление данных.
Вы можете сделать с помощью таблицы contentSize
ключ наблюдателя. Для этого нужно взять Outlet высоты tableview и установить в методе tableView наблюдателя. Установите отключение прокрутки tableView.
override func viewWillAppear(_ animated: Bool) {
tbl.addObserver(self, forKeyPath: "contentSize", options: [.new], context: nil)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
tbl.removeObserver(self, forKeyPath: "contentSize")
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if object is UITableView {
print("contentSize:= \(tbl.contentSize.height)")
self.heightTbl.constant = tbl.contentSize.height
}
}
Надеюсь, что это поможет вам.