我正在尝试隐藏表格视图并删除空间。但是表视图空间没有被删除。首次访问此页面时,表视图中没有数据,因此我写了 ishidden = true 。表已隐藏,但空间未移除。用户手动添加数据并出现表视图。添加后此工作正常数据。 我正在尝试
self.tableView.tableFooterView = UIView()
self.tableView.ishidden=true
以上代码表已隐藏,但不能删除表空间。那么如何删除隐藏表视图的空间。
答案 0 :(得分:0)
您可以借助tableview contentSize
观察者键进行操作。为此,您必须获取Tableview高度的Outlet并将其设置为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
}
}
希望这会对您有所帮助。
答案 1 :(得分:0)
您需要为表格视图设置高度限制。 设置高度的最佳位置是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
}
答案 2 :(得分:0)
如果只想隐藏tableView,则只需将tableView.alpha设置为0并禁用tableView交互。您可以在情节提要层次结构中的表视图之前设置无数据视图,然后使用表视图alpha值进行管理以隐藏和显示无数据视图