I am adding "No results" label if tableView
is empty.
extension UITableView {
override open func layoutSubviews() {
print("Table layoutSubviews")
let label = UILabel(frame: self.bounds)
if self.visibleCells.isEmpty {
label.center = self.center
label.text = "No Results"
label.textAlignment = .center
if label.superview == nil {
self.addSubview(label)
}
} else {
label.removeFromSuperview()
}
}
}
But that doesn't work on updating/Reloading tableView
(on row change). It still show "No Result" on non empty UITableView
extension UITableView {
func setMessage(_ message: String) {
let lblMessage = UILabel(frame: CGRect(x: 0, y: 0, width: self.bounds.size.width, height: self.bounds.size.height))
lblMessage.text = message
lblMessage.textColor = .black
lblMessage.numberOfLines = 0
lblMessage.textAlignment = .center
lblMessage.font = UIFont(name: "TrebuchetMS", size: 15)
lblMessage.sizeToFit()
self.backgroundView = lblMessage
self.separatorStyle = .none
}
func clearBackground() {
self.backgroundView = nil
self.separatorStyle = .singleLine
}
}
Now use this extension as like below
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if items.count == 0 {
tableView.setMessage("No results")
} else {
tableView.clearBackground()
}
return items.count
}
Create Swift Class With Name "TableViewHelper". You Can also Used In a CollectionView.
import UIKit
class TableViewHelper {
class func EmptyMessage(message:String, tableview:UITableView,vc:UIViewController) {
let rect = CGRect(origin: CGPoint(x: 0,y :0), size: CGSize(width: vc.view.bounds.size.width, height: vc.view.bounds.size.height))
let messageLabel = UILabel(frame: rect)
messageLabel.text = message
messageLabel.textColor = UIColor.white
messageLabel.numberOfLines = 0;
messageLabel.textAlignment = .center
messageLabel.font = UIFont(name: "TrebuchetMS", size: 15)
messageLabel.sizeToFit()
tableview.backgroundView = messageLabel;
tableview.separatorStyle = .none;
}
}
class ColelctionViewHelper {
class func EmptyMessage(message:String, collectionview:UICollectionView,vc:UIViewController) {
let rect = CGRect(origin: CGPoint(x: 0,y :0), size: CGSize(width: vc.view.bounds.size.width, height: vc.view.bounds.size.height))
let messageLabel = UILabel(frame: rect)
messageLabel.text = message
messageLabel.textColor = UIColor.white
messageLabel.numberOfLines = 0;
messageLabel.textAlignment = .center
messageLabel.font = UIFont(name: "TrebuchetMS", size: 15)
messageLabel.sizeToFit()
collectionview.backgroundView = messageLabel;
// collectionview.separatorStyle = .none;
}
}
This Is How You Use It,
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
if YourArray.count>0{
TableViewHelper.EmptyMessage(message: "", tableview: TableName,vc: self)
return EventArray.count
}else{
TableViewHelper.EmptyMessage(message: "No Results", tableview: TableName,vc: self)
return 0;
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.