swift使用runtime实现tableView没有数据时的站位背景图

项目开发中常需要站位图,如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()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,814评论 1 32
  • 春风常使人间绿,再把千娇百媚生。 年少抛人容易去,何如一见满条红。 注:春来时,万物先绿,紫荆先花后叶,把最美的一...
    梅心梅飞阅读 469评论 1 15
  • 窝在家里看张爱玲的小说,倦了便倚靠在沙发上睡着了。一觉醒来,打开手机,鹿晗关晓彤的消息铺天盖地席卷而来。今日头条、...
    张悦己阅读 787评论 1 2
  • 2018年1月18日,周杰伦在39岁生日这天发布新歌《等你下课》。半小时后,评论接近4万,26万人在线听歌。 也就...
    猛虎哥阅读 422评论 0 1
  • “你有自我意识吗?” “你何时有的?” 越早越好。
    奈黛奈蔼阅读 323评论 0 0

友情链接更多精彩内容