[英]No results label on empty tableView
如果tableView
為空,我將添加“無結果”標簽。
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()
}
}
}
但這在更新/重新加載tableView
(行更改)上不起作用。 在非空的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
}
}
現在使用此擴展名,如下所示
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if items.count == 0 {
tableView.setMessage("No results")
} else {
tableView.clearBackground()
}
return items.count
}
創建名稱為“ TableViewHelper”的Swift類。 您也可以在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;
}
}
這就是你的使用方式
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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.