簡體   English   中英

致命錯誤:使用未實現的初始化程序Swift

[英]Fatal error: use of unimplemented initializer Swift

我想在導航欄上放置圖像和標簽,所以我決定這樣做:

class FixedImageNavigationItem: UINavigationItem {

    private let fixedImage : UIImage = UIImage(named: "navlogo")!
    private var imagak : UIImageView!
    private let imageView : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 129, height: 40))
    private var labelaki : UILabel!


    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        let tView = imageView
        imagak = UIImageView(frame: CGRect(x: 2, y: 3, width: 32, height: 35))
        labelaki = UILabel(frame: CGRect(x: 38, y: 10, width: 87, height: 21))
        imagak.image = fixedImage
        labelaki.text = "Prime Help"
        labelaki.textColor = UIColor.white
        imageView.addSubview(labelaki)
        imageView.addSubview(imagak)
        tView.contentMode = .scaleAspectFit
        self.titleView = tView

    }


}

上面的代碼在iphone 5及更高版本上運行良好,但是當我嘗試在iphone 4s ios 8上對其進行測試時,出現此錯誤:

致命錯誤:對類“ Insurance.FixedImageNavigationItem”使用未實現的初始化程序“ init(title :)”

有任何想法嗎?

提前致謝

該錯誤與設備類型無關,但與iOS版本無關,因為iOS 9中引入了init(coder :)方法init(coder :)方法,因此導致崩潰。

但是initiaizer init(title :)可以在高於iOS 2.0的iOS版本中使用,並且您已經在iOS 8上實現了它,這就是錯誤的說明。

您應該實現init(title:)而不是init(coder:)

僅當要在情節提要或Xib中進行配置時,才需要覆蓋initWithCoder 在您的情況下,大多數元素已經聲明為常量。 覆蓋initWithCoder ,還必須覆蓋initWithTitle因為initWithTitleUINavigationItem的指定初始化器。 示例代碼將是這樣的。

 class CustomNavItem :UINavigationItem {
    private let fixedImage : UIImage = UIImage(named: "navlogo")!
    private var imagak : UIImageView!
    private let imageView : UIView = UIView(frame: CGRect(x: 0, y: 0, width: 129, height: 40))
    private var labelaki : UILabel!

    override init(title: String) {
        super.init(title: title)
        self.configure()

    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
        self.configure()
    }
    func configure() {
        let tView = imageView
        imagak = UIImageView(frame: CGRect(x: 2, y: 3, width: 32, height: 35))
        labelaki = UILabel(frame: CGRect(x: 38, y: 10, width: 87, height: 21))
        imagak.image = fixedImage
        labelaki.text = title
        labelaki.textColor = UIColor.white
        imageView.addSubview(labelaki)
        imageView.addSubview(imagak)
        tView.contentMode = .scaleAspectFit
        self.titleView = tView
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM