隐藏表格视图单元并删除表格视图空间

时间:2018-09-24 05:51:10

标签: ios swift uitableview swift3 uitableviewrowaction

我正在尝试隐藏表格视图并删除空间。但是表视图空间没有被删除。首次访问此页面时,表视图中没有数据,因此我写了 ishidden = true 。表已隐藏,但空间未移除。用户手动添加数据并出现表视图。添加后此工作正常数据。 我正在尝试

self.tableView.tableFooterView = UIView()
self.tableView.ishidden=true

以上代码表已隐藏,但不能删除表空间。那么如何删除隐藏表视图的空间。

3 个答案:

答案 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值进行管理以隐藏和显示无数据视图