代码之家  ›  专栏  ›  技术社区  ›  raginggoat

uibutton子类在故事板中崩溃[重复]

  •  -1
  • raginggoat  · 技术社区  · 5 年前

    我有uibutton的子类,当我将该按钮添加到故事板中的视图控制器时,我的应用程序崩溃 fatalError("init(coder:) has not been implemented" )如果我手动在代码中添加子类按钮,它会正常工作。我做错什么了?

    import UIKit
    
    class RAPanicButton: UIButton {
    
        override init(frame: CGRect) {
            super.init(frame: frame)
    
            self.layer.cornerRadius = self.frame.height / 2
            self.layer.masksToBounds = true
            self.clipsToBounds = true
    
            self.backgroundColor = .red
            self.setTitle("Panic!", for: .normal)
            self.titleLabel?.textColor = .white
        }
    
        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            fatalError("init(coder:) has not been implemented")
        }
    }
    

    enter image description here

    1 回复  |  直到 5 年前
        1
  •  4
  •   Sweeper    5 年前

    故事板中的内容将通过调用 init(coder:) 初始化器。这意味着,如果要在故事板中使用视图,则不能将 fatalError 在里面 init(编码器:) .

    您可以在两个初始化器中输入相同的代码:

    func setup() {
        self.layer.cornerRadius = self.frame.height / 2
        self.layer.masksToBounds = true
        self.clipsToBounds = true
    
        self.backgroundColor = .red
        self.setTitle("Panic!", for: .normal)
        self.titleLabel?.textColor = .white
    }
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        setup()
    }