【问题标题】:How to Hide tableview height when click on button in Swift单击Swift中的按钮时如何隐藏tableview高度
【发布时间】:2021-12-23 22:38:05
【问题描述】:

使用下面的代码,我可以获得 tableview 动态高度,但是当我隐藏 tableview 时,动态高度仍然保留在视图中,为什么?

我在故事板中使用 tableview 高度 0

代码:最初我隐藏了tableview,这里workExpBtn 就像展开/折叠按钮。所以第一次如果我点击 workExpBtn 然后 tableview 显示但是如果我第二次点击按钮然后 tableview 隐藏但它的高度仍然在视图中为什么?

如果我隐藏了 tableview,那么我需要再次将 tableview 高度设为0,但是如何?

class WorkVC: UIViewController, UITableViewDelegate, UITableViewDataSource {

@IBOutlet weak var workExpTablHeight: NSLayoutConstraint!
@IBOutlet weak var workExpTableview: UITableView!
override func viewDidLoad() {
    super.viewDidLoad()
    
    workExpTablHeight.constant = 0
    workExpTableview.isHidden = true
}


@IBAction func workExpBtn(_ sender: Any) {
    
    workExpTableview.isHidden = workExpTableview.isHidden ? false : true
    workExpTableview.addObserver(self, forKeyPath: "contentSize", options: .new, context: nil)
    workExpTableview.reloadData()
}

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    let tableview = object as? UITableView
    if tableview == self.workExpTableview{
        if(keyPath == "contentSize"){
            if let newvalue = change?[.newKey]
            {
                let newsize  = newvalue as! CGSize
                workExpTablHeight.constant = newsize.height
            }
        }
    }
}
}



func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: "WorkExpCell", for: indexPath) as! WorkExpCell
    cell.selectionStyle = .none
    return cell
}

最初tableview隐藏o/p:

当我点击按钮时,tableview 显示带有绿色单元格的 o/p:

当我再次点击按钮时,tableview 被隐藏但高度保持为 o/p:

【问题讨论】:

  • 将表格视图和标签视图都放在隐藏tableView的垂直堆栈中,它将起作用
  • @NomanUmar,谢谢,成功了

标签: swift tableview height show-hide


【解决方案1】:

将部分用作可点击的标题,将选项用作行,当您必须显示选项时,返回与您的选项相等的行,当您必须隐藏选项时,在 numberOfRowInSection0 /em> 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多