• Swift 之Protocol在cocoa中的使用范例搜集(一)


    protocol Reusable: class {
        static var reuseIndentifier: String {get}
        static var nib: UINib? {get}
    }
    
    extension Reusable {
        static var reuseIndentifier: String { return String(Self) }
        static var nib: UINib? { return nil }
    }
    
    extension UITableView {
        
        func registerReusableCell<T: UITableViewCell where T: Reusable>(_: T.Type) {
            if let nib = T.nib {
                self.registerNib(nib, forCellReuseIdentifier: T.reuseIndentifier)
            }else {
                self.registerClass(T.self , forCellReuseIdentifier: T.reuseIndentifier)
            }
        }
        
        func dequeueReusableCell<T: UITableViewCell where T: Reusable>(indexpath : NSIndexPath) -> T {
            return self.dequeueReusableCellWithIdentifier(T.reuseIndentifier, forIndexPath: indexpath) as! T
        }
        
        func registerReusableHeaderFooterView<T: UITableViewHeaderFooterView where T: Reusable>(_: T.Type) {
            if let nib = T.nib {
                self.registerNib(nib, forHeaderFooterViewReuseIdentifier: T.reuseIndentifier)
            } else {
                self.registerClass(T.self, forHeaderFooterViewReuseIdentifier: T.reuseIndentifier)
            }
        }
        
        func dequeueReusableHeaderFooterView<T: UITableViewHeaderFooterView where T: Reusable>() -> T? {
            return self.dequeueReusableHeaderFooterViewWithIdentifier(T.reuseIndentifier) as! T?
        }
    }
    
    class JHTableViewCell: UITableViewCell, Reusable {
        static var nib: UINib? {
            return UINib(nibName: String(JHTableViewCell.self), bundle: nil)
        }
        
        override func awakeFromNib() {
            super.awakeFromNib()
        }
    
        override func setSelected(selected: Bool, animated: Bool) {
            super.setSelected(selected, animated: animated)
        }
    }
    
    class CodeBasedCustomCell: UITableViewCell, Reusable { }
  • 相关阅读:
    使用Maven Helper解决Maven依赖冲突
    bzoj 1037[ZJOI2008]生日聚会Party
    bzoj 1031[JSOI2007]字符加密
    bzoj 1029 [JSOI2007]建筑抢修
    bzoj 1025[SCOI2009]游戏
    bzoj 1027[JSOI2007]合金
    bzoj 1024[SCOI2009]生日快乐
    bzoj 1023[SHOI2008]cactus仙人掌图
    bzoj 1022 [SHOI2008]小约翰的游戏John
    bzoj 1021[SHOI2008]Debt 循环的债务
  • 原文地址:https://www.cnblogs.com/Ohero/p/5169340.html
Copyright © 2020-2023  润新知