An iOS component for customizing empty state views in UITableView and UICollectionView.
WLEmptyState is an iOS library that provides customizable empty state views for UITableView and UICollectionView when they have no data to display. It solves the problem of blank screens in iOS apps by allowing developers to show informative, branded, or engaging placeholders instead.
iOS developers building apps with UITableView or UICollectionView who want to improve user experience during empty data states.
Developers choose WLEmptyState for its simple protocol-based integration, extensive customization options, and seamless compatibility with standard iOS view controllers without requiring major architectural changes.
WLEmptyState is an iOS based component that lets you customize the view when the dataset of a UITableView or a UICollectionView is empty. We created a sample project with the WLEmptyState component to show how you can use it.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Conforming to WLEmptyStateDataSource and Delegate protocols allows for easy setup and customization, as shown in the README with clear code examples for table and collection views.
Supports custom images, titles, descriptions, and even full UIView implementations, enabling branded designs like the 'bubble_icon' example and custom activity indicators.
Method swizzling automatically hooks into view controllers after a single configure() call in AppDelegate, reducing boilerplate code and simplifying integration.
Allows disabling scrolling when empty state is displayed via the enableScrollForEmptyState() delegate method, enhancing user experience by preventing unintended navigation.
Relies on method swizzling, which can introduce subtle bugs, conflicts with other libraries, and make debugging harder, as acknowledged in the configuration steps.
No support for SwiftUI or other modern UI frameworks, making it obsolete for projects transitioning to or built with Apple's newer technologies.
Requires setup in AppDelegate with configure(), which is intrusive and may not align with modular architectures or dependency injection patterns.