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

Posted

技术标签:

【中文标题】UIButton子类在故事板中崩溃[重复]【英文标题】:UIButton Subclass Crashes When in Storyboard [duplicate] 【发布时间】:2019-01-07 13:56:30 【问题描述】:

我有一个 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")
    

【问题讨论】:

【参考方案1】:

情节提要中的内容将通过调用init(coder:) 初始化程序进行初始化。这意味着如果你想在故事板中使用你的视图,你一定不能在init(coder:) 中抛出fatalError

您可以在两个初始化程序中放入相同的代码:

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()

【讨论】:

以上是关于UIButton子类在故事板中崩溃[重复]的主要内容,如果未能解决你的问题,请参考以下文章

UITableViewCell 子类布局在禁用自动布局的故事板中搞砸了

故事板中的子类 viewController 并以编程方式从子类更改 UI

故事板中控件的动态子类

故事板中的 UITableView

在 xcode 5 故事板中返回上一个 ViewController

如何使故事板中的 UiView 尊重百分比[重复]