swift view初始化 fatalError("

2018-12-06  本文已影响85人  目染江夏

自定义view的时候 ,为了使用 xib 和 纯代码创建。
注 : required init?(coder aDecoder: NSCoder) 必须加上 ,里面实现 super.init(coder: aDecoder)。
系统默认实现是 fatalError("init(coder:) has not been implemented") ,xib初始化的时候会crash。

    override init(frame: CGRect) {
        super.init(frame: frame)
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
    
    override func awakeFromNib() {
        super.awakeFromNib()
        setupUI()
    }
    

TableViewcCell初始化时可以不用 在 required init?(coder aDecoder: NSCoder)中实现 super.init(coder: aDecoder) 直接用默认的就可以

    required init?(coder aDecoder: NSCoder) {
       fatalError("init(coder:) has not been implemented")
    }
    
    override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        createUI()
        loadLayout()
    }
    
    
    override func awakeFromNib() {
        super.awakeFromNib()
        createUI()
        loadLayout()
    }
    

TableviewHeaderFooterView初始化时可以不用 在 required init?(coder aDecoder: NSCoder)中实现 super.init(coder: aDecoder) 直接用默认的就可以

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override init(reuseIdentifier: String?) {
        super.init(reuseIdentifier: reuseIdentifier)
        createUI()
        loadLayout()
    }
    
    override func awakeFromNib() {
        super.awakeFromNib()
        createUI()
        loadLayout()
    }
上一篇下一篇

猜你喜欢

热点阅读