![](/img/trans.png)
[英]Parse/Swift fatal error: use of unimplemented initializer 'init()
[英]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
因為initWithTitle
是UINavigationItem
的指定初始化器。 示例代碼將是這樣的。
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.