美文网首页Swift好文收藏
swift使用runtime实现tableView没有数据时的站

swift使用runtime实现tableView没有数据时的站

作者: 夏至樱花祭 | 来源:发表于2019-01-02 17:26 被阅读0次

项目开发中常需要站位图,如tableview,但是项目开发到中途,可能有几百个tableview在你到项目里。
这里我采用到办法是写一个extension,实现一个类方法。在appdelegate中调用这个类方法实现。代码如下:

extension UITableView {
    
    /// 类方法实现runtime的方法交换,处理tableview没有数据时的背景图
    public class func initializeMethod() {
        
        let originalSelector = #selector(UITableView.reloadData)
        let swizzledSelector = #selector(jc_reloadData)
        
        //  runtime获取函数方法
        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中调用

  UITableView.initializeMethod()

相关文章

网友评论

    本文标题:swift使用runtime实现tableView没有数据时的站

    本文链接:https://www.haomeiwen.com/subject/mkxtrqtx.html