[swift] DZNEmptyDataSet을 사용하여 빈 상태뷰에서 연결된 페이지로 이동하기

iOS 앱에서는 데이터가 없는 상황에서 사용자에게 빈 상태뷰를 제공하는 것이 중요합니다. DZNEmptyDataSet은 UITableView나 UICollectionView에서 이러한 빈 상태뷰를 구현할 수 있는 라이브러리입니다. 이번 블로그 포스트에서는 DZNEmptyDataSet을 사용하여 빈 상태뷰에서 연결된 페이지로 이동하는 방법을 알아보겠습니다.

DZNEmptyDataSet이란?

DZNEmptyDataSet은 Objective-C와 Swift를 모두 지원하는 빈 상태뷰 라이브러리입니다. TableView 또는 CollectionView에서 사용자에게 데이터가 없는 경우 적절한 메시지나 이미지를 표시하고 사용자 경험을 향상시킬 수 있습니다.

DZNEmptyDataSet 추가하기

  1. Cocoapods을 사용하여 DZNEmptyDataSet을 프로젝트에 추가합니다. Podfile에 다음과 같이 라이브러리를 추가합니다.
pod 'DZNEmptyDataSet', '~> 1.9.0'
  1. 다음 명령어를 터미널에 입력하여 Cocoapods을 설치합니다.
pod install
  1. UITableViewUICollectionView를 사용하는 ViewController에 DZNEmptyDataSet을 적용합니다.
import DZNEmptyDataSet

class MyViewController: UIViewController, DZNEmptyDataSetSource, DZNEmptyDataSetDelegate {

    @IBOutlet weak var tableView: UITableView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // DZNEmptyDataSet의 대리자 등록
        tableView.emptyDataSetDelegate = self
        tableView.emptyDataSetSource = self
    }
    
    // DZNEmptyDataSet의 뷰 커스터마이징
    func title(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? {
        let text = "데이터가 없습니다."
        let attributes: [NSAttributedString.Key: Any] = [
            .font: UIFont.boldSystemFont(ofSize: 18.0),
            .foregroundColor: UIColor.gray
        ]
        return NSAttributedString(string: text, attributes: attributes)
    }
    
    func description(forEmptyDataSet scrollView: UIScrollView) -> NSAttributedString? {
        let text = "데이터를 추가하려면 '+' 버튼을 눌러주세요."
        let attributes: [NSAttributedString.Key: Any] = [
            .font: UIFont.systemFont(ofSize: 16.0),
            .foregroundColor: UIColor.lightGray
        ]
        return NSAttributedString(string: text, attributes: attributes)
    }
    
    func buttonImage(forEmptyDataSet scrollView: UIScrollView, for state: UIControl.State) -> UIImage? {
        return UIImage(named: "add_button")
    }
    
    func emptyDataSet(_ scrollView: UIScrollView, didTapButton button: UIButton) {
        // '+ 버튼'이 탭되었을 때의 동작을 구현합니다.
    }
    
    func emptyDataSetShouldDisplay(_ scrollView: UIScrollView) -> Bool {
        // 데이터가 없을 때 빈 상태뷰를 표시할지 여부를 반환합니다.
        // 데이터가 있는지 여부에 따라 true 또는 false를 반환하면 됩니다.
        return true
    }

}
  1. 마지막으로, 연결된 페이지로 이동하려면 emptyDataSet(_:didTapButton:) 메서드를 구현하여 원하는 동작을 추가합니다.
func emptyDataSet(_ scrollView: UIScrollView, didTapButton button: UIButton) {
    let nextPageViewController = NextPageViewController()
    self.navigationController?.pushViewController(nextPageViewController, animated: true)
}

이제 DZNEmptyDataSet을 사용하여 빈 상태뷰에서 연결된 페이지로 이동하는 기능을 구현할 수 있습니다.

더 많은 DZNEmptyDataSet의 기능을 알아보려면 공식 GitHub 저장소를 참고하세요.

Happy coding!