Programming language: Swift
License: MIT License
Tags: UI     UITableView    
Latest version: v3.1.0

WLEmptyState alternatives and similar libraries

Based on the "UITableView" category.
Alternatively, view WLEmptyState alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of WLEmptyState or a related project?

Add another 'UITableView' Library


WLEmptyState_Banner WLEmptyState CI Version Carthage compatible Twitter MIT license

Table of Content <!-- omit in toc -->


WLEmptyState is an iOS based component that lets you customize the message when the dataset of UITableView or UICollectionView is empty. We created a sample project with the WLEmptyState component to show how you can use it.

Running an Example Project

To run the Example project:

  1. Clone the repo with the following command:

    git clone [email protected]:wizeline/WLEmptyState.git

  2. Move to the Example directory and run the following command:

    pod install

Installing WLEmptyState


WLEmptyState is available through CocoaPods. To install it, add the following command to your Podfile:

pod 'WLEmptyState'

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. To integrate WLEmptyState into your Xcode project using Carthage, specify it in your Cartfile:

github "wizeline/WLEmptyState"

Configuring WLEmptyState

The WLEmptyState component uses Method Swizzling. Therefore, to configure WLEmptyState, follow these steps:

  1. Import the module in the AppDelegate class by adding import WLEmptyState.

  2. Call the static method configure() on application(_ application:, didFinishLaunchingWithOptions:) method.

    Your AppDelegate class should look like this:

    import WLEmptyState
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        return true

Using WLEmptyState

Once you have configured WLEmptyState, you can use it for your UITableViewController or UICollectionViewController. You need to conform the WLEmptyStateDataSource protocol. For example,

class YourTableViewController: UITableViewController, WLEmptyStateDataSource {

    override func viewDidLoad() {
        tableView.emptyStateDataSource = self


After you run your project with an empty dataset for your entity, you'll be able to see a default WLEmptyState view.

Default Image

Default WLEmptyState

Customizing Default WLEmptyState

If you want to customize the text, description, or image, of the default component you need to implement the WLEmptyStateDataSource function. You can find the code for customization in the following list:

  • Customize Image
func imageForEmptyDataSet() -> UIImage? {
    return UIImage(named: "bubble_icon")
  • Customize Title
func titleForEmptyDataSet() -> NSAttributedString {
    let title = NSAttributedString(string: "No messages", attributes: [NSAttributedString.Key.font: UIFont.preferredFont(forTextStyle: .headline)])
    return title
  • Customize Description
func descriptionForEmptyDataSet() -> NSAttributedString {
    let title = NSAttributedString(string: "There's no messages to show.", attributes: [NSAttributedString.Key.font: UIFont.preferredFont(forTextStyle: .caption1)])
    return title

Customized Image

Creating your own EmptyState

Using customViewForEmptyState() allows you to provide your own implementation for Empty State.

func customViewForEmptyState() -> UIView? {
  let activityIndicatorView = UIActivityIndicatorView()
  activityIndicatorView.color = .purple
  return activityIndicatorView

Simulator Screen Shot - iPhone X - 2019-07-24 at 16 07 43

Disable scroll

You can disable the scroll when the Empty State is showing. You only need to conform the WLEmptyStateDelegate protocol and return false in the enableScrollForEmptyState() function:

// Conform the WLEmptyStateDelegate protocol
class YourTableViewController: UITableViewController, WLEmptyStateDataSource, WLEmptyStateDelegate {

    override func viewDidLoad() {

        tableView.emptyStateDataSource = self        
        tableView.emptyStateDelegate = self // Set your delegate

    func enableScrollForEmptyState() -> Bool {        
        // To enable/disable the scroll return true or false
        return false


Contributing to WLEmptyState

We actively welcome your pull requests. We are trying to make contributions to this project as transparent and accessible as possible, please read our [Contributing guidelines](contributing.md) and follow the [Code of conduct](CODE_OF_CONDUCT.md). If you face any problem with the code, please open an issue on GitHub.

List of Contributors. ⭐️


WLEmptyState is available under the MIT license. See the LICENSE file for more info.

*Note that all licence references and agreements mentioned in the WLEmptyState README section above are relevant to that project's source code only.