2017-02-24 79 views
3

我有一個tableview,我用它作爲屏幕的一部分。Swift3:隱藏UITableView如果爲空

@IBOutlet var tableView: UITableView!

有時候,我有數據,有時候我不知道。 我想僅在存在數據時才顯示錶格,並且在沒有數據時將其隱藏。

我試着用小於或等於選項添加高度約束。但是如果我這樣做,即使有數據,tableview也會隱藏起來

我該怎麼辦?

我搜索了一下,沒有找到解決辦法,所以在這裏問。

聲明:我是iOS/Swift開發新手。對不起,如果這已經回答了

回答

13

您可以顯示隱藏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 
     } 
    } 
} 
+0

原因是什麼? –

+5

我沒有投票,但是你建議隱藏'numberOfRowsInSection'委託方法中的表是一個不好的建議。在任何委託方法被調用之前,視圖應該隱藏很久。 – rmaddy

+0

@rmaddy更新回答 –

3

設置tableView.isHiden = true如果沒有數據存在。

4

你也可以試試這個,這樣你就可以利用空的表空間。

  • 設置了出風口到表高度約束並添加以下線的向下投票

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

enter image description hereenter image description here

+0

雖然這個工程,我更傾向於設置isHidden爲true –

+0

嗯,這沒關係。 :) – Gokul

+2

這對我很有用,因爲isHidden變量被其他東西嚴格控制。實際上,通過這個,我們可以根據表中元素的數量來控制表的大小。對我的Autocomplete應用程序非常有用,等等。我們可以逐行隱藏,並逐行顯示,使表格高度非常適應。謝謝。 – nyxee