Handling an empty UITableView. Print a friendly message

前端 未结 22 1153
青春惊慌失措
青春惊慌失措 2020-12-04 05:22

I have a UITableView that in some cases it is legal to be empty. So instead of showing the background image of the app, I would prefer to print a friendly message in the scr

22条回答
  •  一向
    一向 (楼主)
    2020-12-04 06:00

    Same as Jhonston's answer, but I preferred it as an extension:

    import UIKit
    
    extension UITableView {
    
        func setEmptyMessage(_ message: String) {
            let messageLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.bounds.size.width, height: self.bounds.size.height))
            messageLabel.text = message
            messageLabel.textColor = .black
            messageLabel.numberOfLines = 0
            messageLabel.textAlignment = .center
            messageLabel.font = UIFont(name: "TrebuchetMS", size: 15)
            messageLabel.sizeToFit()
    
            self.backgroundView = messageLabel
            self.separatorStyle = .none
        }
    
        func restore() {
            self.backgroundView = nil
            self.separatorStyle = .singleLine
        }
    }
    

    Usage:

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if things.count == 0 {
            self.tableView.setEmptyMessage("My Message")
        } else {
            self.tableView.restore()
        }
    
        return things.count
    }
    

提交回复
热议问题