Скрыть ячейку табличного представления и удалить пространство табличного представления

Я пытаюсь скрыть табличное представление и удалить пространство. Но табличное пространство просмотра не удалено. Когда пользователь впервые заходит на эту страницу, в табличном представлении нет данных, поэтому я пишу 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
        }
    }

Надеюсь, что это поможет вам.

Другие вопросы по тегам