美文网首页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