2017-02-24 10 views
3

私は画面の一部として使用するtableviewを持っています。Swift3:空の場合はUITableViewを非表示にします。

@IBOutlet var tableView: UITableView!

時々私は、データを持っている、と時々私にはありません。 データが存在する場合にのみテーブルを表示し、データがない場合にはテーブルを非表示にしたいとします。

オプションよりも小さいか等しい高さの制約を追加しようとしました。しかし、私がそうすると、データがあってもテーブルビューは隠されます

どうすればいいですか?

私はグーグルで調べて解決策を見つけられなかったので、ここで質問します。

免責事項:私はiOS /スウィフト開発の初心者です。申し訳ございませんが既に回答している場合

答えて

13

以下のように表示することができますtableView

データを入力する配列を使用して、またはtableViewプロパティnumberOfRowsInSectionを使用して数を確認できます。

データ

tableView.ishidden = false 

それとも、以下のようにデリゲートメソッドを使用することができますがある場合にはデータ

tableView.ishidden = true 

はありません。

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変数が何かによって厳重に制御されていたため、これは役に立ちました。実際には、これでテーブルの要素の数に応じてテーブルのサイズを制御できます。私のオートコンプリートアプリケーションなどに非常に便利です。行ごとに隠すことができ、行ごとに表示することで、テーブルの高さを非常に適応させることができます。ありがとう。 – nyxee

関連する問題