項目開發(fā)中常需要站位圖,如tableview,但是項目開發(fā)到中途,可能有幾百個tableview在你到項目里。
這里我采用到辦法是寫一個extension,實現(xiàn)一個類方法。在appdelegate中調(diào)用這個類方法實現(xiàn)。代碼如下:
extension UITableView {
/// 類方法實現(xiàn)runtime的方法交換,處理tableview沒有數(shù)據(jù)時的背景圖
public class func initializeMethod() {
let originalSelector = #selector(UITableView.reloadData)
let swizzledSelector = #selector(jc_reloadData)
// runtime獲取函數(shù)方法
let originalMethod = class_getInstanceMethod(self, originalSelector)
let swizzledMethod = class_getInstanceMethod(self, swizzledSelector)
method_exchangeImplementations(originalMethod!, swizzledMethod!)
}
@objc func jc_reloadData(){
self.jc_reloadData()
let number = self.numberOfSections
var havingData = false
for i in 0..<number {
if self.numberOfRows(inSection: i) > 0{
havingData = true
break
}
}
if havingData {
self.backgroundView = UIImageView()
}else{
self.backgroundView = UIImageView.init(image: UIImage.init(named: "drawing_no_duty"))
self.backgroundView?.contentMode = .center
}
}
}
在appdelegate中調(diào)用
UITableView.initializeMethod()