初始化时,自定义UIView类始终崩溃

时间:2016-07-18 13:37:58

标签: swift uiview swift2

我创建了一个简单的自定义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")
    }
}

正如您在图像中看到的那样,当我尝试设置任何值时,它总是会崩溃。怎么会这样?

enter image description here

2 个答案:

答案 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文件并连接插座 - 您可以更轻松地维护视图并快速查看更改。