【问题标题】:Swift3 : Hide UITableView if EmptySwift3:如果为空则隐藏 UITableView
【发布时间】:2017-02-24 04:36:16
【问题描述】:

我有一个表格视图,我将其用作屏幕的一部分。

@IBOutlet var tableView: UITableView!

有时我有数据,有时我没有。 我只想在数据存在时显示表格,在没有数据时隐藏它。

我尝试使用小于或等于选项添加高度约束。但是如果我这样做,即使我有数据,tableview 也会被隐藏

我该怎么办?

我搜索了一下,没有找到解决方案,所以在这里问。

免责声明:我是 iOS/Swift 开发的新手。对不起,如果这已经回答了

【问题讨论】:

    标签: ios swift swift3 ios10


    【解决方案1】:

    您可以显示隐藏tableView,如下所示。

    您可以使用可能用于填充数据的数组或tableView 属性numberOfRowsInSection 来检查计数。

    当没有数据时

    tableView.ishidden = true
    

    当有数据时

    tableView.ishidden = false
    

    或者你可以使用下面的委托方法。

     override func viewWillAppear(_ animated: Bool) {
            if array.isEmpty {
                self.tableView.isHidden = true
            }
            else {
                self.tableView.isHidden = false
            }
        }
    

    更好的方法是使用 didSet。

    var dataArray: [String] = [] {
       didSet {
          if dataArray.count > 0 {
             //Update Table Data
          } else {
             //Hide Table and show so info of no data
          }
       }
    }
    

    【讨论】:

    • 我没有投反对票,但您建议将表格隐藏在 numberOfRowsInSection 委托方法中是一个糟糕的建议。在调用任何委托方法之前,视图应该被隐藏很久。
    • @rmaddy 更新答案
    • 即使是 OP 也可以在重新加载 tableView 之前检查数组值。如果array.count ==0 则隐藏tableView 否则显示tableView。
    • is: "tableView.isHidden = true" 不是 "tableView.ishidden = true"。 “h”“H”。只为第一篇文章。稍后 in override func viewWillAppear 就可以了。
    【解决方案2】:

    你也可以试试这个,这样你就可以利用空表空间了。

    • 为您的表格高度约束设置出口并添加以下行

      tableHeightConstraint.constant = array.count != 0 ? 250 : 0
      

    【讨论】:

    • 虽然这样可行,但我更倾向于将 isHidden 设置为 true
    • 嗯,没关系。 :)
    • 这对我很有用,因为 isHidden 变量被其他东西严格控制。事实上,有了这个,我们可以根据表格中元素的数量来控制表格的大小。对我的自动完成应用程序非常有用,等等。我们可以逐行隐藏,逐行显示,使表格高度自适应。谢谢。
    【解决方案3】:

    如果没有要显示的数据,则设置tableView.isHiden = true。

    【讨论】:

      猜你喜欢
      • 2021-11-24
      • 2012-01-08
      • 2013-04-02
      • 2020-11-06
      • 2014-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 2022-01-16
      相关资源
      最近更新 更多