UITableView でデータを一覧表示させる際、場合によってはデータが 1件もないことがあるかと思います。
その時、デフォルトだと真っ白な画面が表示されるのですが、それだけだとちょっと不親切なので、メッセージを表示させる方法についてです。
導入したライブラリは「DZNEmptyDataSet」です。
サンプルコードだと、エラー画像を表示できるとのことでしたが、テキストのみもOKでした。
GitHub のページはこちら。
GitHub – dzenbot/DZNEmptyDataSet: A drop-in UITableView/UICollectionView superclass category for showing empty datasets whenever the view has no content to display
https://github.com/dzenbot/DZNEmptyDataSet
まず、ライブラリをインストールします。
今回も CocoaPods
を使ったので、Podfile
に下記を追加します。
pod 'DZNEmptyDataSet'
で、iTerm などのコマンドラインツールで pod install
を実行します。
インストールが完了したら、UITableView を表示している Controller にコードを追加していきます。
まず、DZNEmptyDataSetSource と DZNEmptyDataSetDelegate を Controller に追加します。
具体的には下記のサンプルコードのようにします。
class ListController: UITableViewController, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate { override func viewDidLoad() { super.viewDidLoad() self.tableView.emptyDataSetDelegate = self self.tableView.emptyDataSetSource = self } }
また、viewDidLoad
内に、5、6行目のコードも追加してください。
こちらを追加したら、下記のコードも追加します。
func title(forEmptyDataSet scrollView: UIScrollView!) -> NSAttributedString! { return NSAttributedString(string: "データがありません") }
上記のコードで、TableView が空だった時のメッセージを定義しています。
返り値は NSAttributedString
なので、フォントを変更するなど、文字を装飾することも可能です。
なお、画像を表示させたい場合は下記のように指定してください。
func image(forEmptyDataSet scrollView: UIScrollView!) -> UIImage! { return UIImage(named: "画像名") }
画像は Images.xcassets
から取得していますが、もちろん UIImage
であれば他の方法でもOKです。
追加するコードは以上です。
あとは実際に実行して結果を確認してください。
デフォルトの設定だと、メッセージの文字色がグレーなので、特に変更しなくても良さそうです。
ただ、ちょっとフォントサイズは大きいように感じるので、こちらについては調整します。
以上、Swift で UITableView が空だったときにメッセージを表示するライブラリ「DZNEmptyDataSet」のご紹介でした。
ご参考になれば幸いです。