A drop-in UITableView/UICollectionView category for displaying customizable empty state views when content is unavailable.
DZNEmptyDataSet is an open-source iOS library that provides a drop-in category for UITableView and UICollectionView to display customizable empty state views when there is no content to show. It solves the problem of blank screens in list views by offering informative placeholders, improving user experience and guiding interactions.
iOS developers building apps with table views or collection views who need to handle empty data states professionally, particularly those focused on UX polish and brand consistency.
Developers choose DZNEmptyDataSet for its seamless integration without requiring subclassing, extensive customization options via protocols, and broad compatibility across iOS versions and Apple platforms, making it a reliable, production-ready solution.
A drop-in UITableView/UICollectionView superclass category for showing empty datasets whenever the view has no content to display
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Works as a category on UIScrollView, allowing easy addition to existing UITableView or UICollectionView without subclassing, as highlighted in the README's 'Drop-in Integration' feature.
Supports images, titles, descriptions, buttons, and custom views with NSAttributedString for detailed appearance control, enabling branded empty states as shown in the sample projects.
Automatically centers content with rotation support and allows custom vertical/horizontal offsets, ensuring consistent layouts across devices, per the 'Auto-Layout & Alignment' feature.
Compatible with iOS 6+, tvOS 9+, and works with UITableView, UICollectionView, UISearchDisplayController, and Storyboards, covering a wide range of Apple platforms.
Primarily designed for Objective-C, leading to clunky integration in modern Swift projects with @objc annotations and potential bridging issues, despite some Swift support.
Requires implementing separate DZNEmptyDataSetSource and DZNEmptyDataSetDelegate protocols, adding code overhead compared to more streamlined, declarative approaches.
Empty states don't automatically update with data changes; developers must manually call reloadData or reloadEmptyDataSet, which can be inefficient for real-time apps.