我创建了一个简单的自定义UIView类。
webapps
我以这种方式实例化:
import Foundation
import UIKit
class customShop : UIView{
var bannerViewHight: NSLayoutConstraint!
var bannerViewTop: NSLayoutConstraint!
var bannerViewLeft: NSLayoutConstraint!
var bannerViewRight: NSLayoutConstraint!
var banerDiscount: UIImageView!
var bannerImageShop : UIImageView!
var bannerTitle : UILabel!
var bannerDescription: UILabel!
var bannerButton: UIButton!
override init (frame : CGRect) {
super.init(frame : frame)
self.bannerTitle.text = ""
}
convenience init () {
self.init(frame:CGRect.zero)
}
required init(coder aDecoder: NSCoder) {
fatalError("This class does not support NSCoding")
}
}
正如您在图像中看到的那样,当我尝试设置任何值时,它总是会崩溃。怎么会这样?
答案 0 :(得分:1)
bannerTitle
未初始化。变化:
var bannerTitle: UILabel!
为:
var bannerTitle: UILabel! = UILabel()
或者更简洁地说,
var bannerTitle = UILabel()
您对变量所做的事情(: UILabel
部分)只是指定对象的类型;它没有初始化它们。
答案 1 :(得分:1)
据我所知,这些不是网点,我也看不到任何初始化代码。你应该做的是通过以下方式创建标签:
self.bannerTitle = UILabel()
或使用框架,以确保您可以看到该标签:
self.bannerTitle = UILabel(frame: frame)
第二个将创建具有视图大小的视图。
我建议您创建xib文件并连接插座 - 您可以更轻松地维护视图并快速查看更改。