【swift】tableView에 아무것도 없으면 요시오카 리호 짱이 출현한다

【swift】tableView에 아무것도 없으면 요시오카 리호 짱이 출현한다


  • 이번은, UITabaleView나 UICollectionView에 표시하는 요소가 0이면, 요시오카 리호 씨 가 출현하도록(듯이) 합니다.
  • 앱을 만들 때 매번 신세를 지고 있는 라이브러리에서 dzenbot/DZNEmptyDataSet 라는 UITabaleView나 UICollectionView에 표시하는 요소가 없으면 임의의 이미지나 문자를 설정해 줍니다.

  • 완성형은 이런 느낌입니다(요소가 0일 때)





    요소가 있으면 일반적으로 색인을 표시합니다.





    구현해보기



    cocoapod 또는 carthage로 dzenbot/DZNEmptyDataSet 넣기



    cocoapods


      pod 'DZNEmptyDataSet'
    
    $ pod install
    

    carthage


    github "dzenbot/DZNEmptyDataSet"
    
    $ carthage update --platform iOS
    

    소스 코드는 이것만


  • 이미지는 riho1 으로 Assets.xcassets 에 있습니다.
  • numberOfRowsInSection 를 0으로 하면 요시오카 리호 짱이 출현할 것입니다.
  • 포인트로서 이번 delegate의 설정은, Storyboard만으로 실시합니다.

  • viewController.swift
    import UIKit
    import DZNEmptyDataSet
    
    class ViewController: UIViewController {
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    }
    
    extension ViewController: UITableViewDataSource, UITableViewDelegate {
        func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
            cell.textLabel?.text = "\(indexPath.row)"
            return cell
        }
    
        func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return 10 // <= ここを0にしたときに、吉岡里帆ちゃんが出現すれば成功
        }
    }
    
    extension ViewController: DZNEmptyDataSetSource, DZNEmptyDataSetDelegate {
        func image(forEmptyDataSet scrollView: UIScrollView!) -> UIImage! {
            return UIImage(named: "riho1")
        }
    }
    

    Storyboard 설정



    UITableView와 DZNEmptyDataSet의 delegate를 스토리 보드에서 설정 <- 포인트! !



  • referencing Outlets 에
  • UITableViewDataSource
  • UITableViewDelagate
  • DZNEmptyDataSetSource
  • DZNEmptyDataSetDelegate 가 설정되어 있습니다.

  • 이 때, viewController 에 DZNEmptyDataSet 가 import 되고 있는 것, 스토리 보드에 viewController 가 custom class 로 설정되어 있으면, 설정할 수 있습니다.
  • 아래 그림과 같이 tableView를 Controll을 누른 상태에서 ViewController에서 놓으면 delegate를 설정할 수 있습니다. 소스 코드 안에서 일일이 ????.delegate = self 그리고 하지 않아도 좋아집니다.





  • 완성형은 이쪽





    요약


  • DZNEmptyDataSet 를 사용하면, tableView 또는 colelctionView scrollView 에 아무것도 없을 때에 화상이나 텍스트를 간단하게 표시할 수가 있습니다.
  • 추천입니다!
  • 좋은 웹페이지 즐겨찾기