Swift 之Protocol在cocoa中的使用范例搜集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 { }

 

以上是关于Swift 之Protocol在cocoa中的使用范例搜集的主要内容,如果未能解决你的问题,请参考以下文章

《从零开始学Swift》学习笔记(Day 63)——Cocoa Touch设计模式及应用之单例模式

iOS开发-Swift进阶之协议Protocol!

保护文档架构中的模型(Cocoa/Swift)

如何使用 Storyboards/Cocoa 在 Swift 3.x 中引用视图的窗口

《从零开始学Swift》学习笔记(Day 65)——Cocoa Touch设计模式及应用之选择器

《从零开始学Swift》学习笔记(Day 65)——Cocoa Touch设计模式及应用之选择器