【发布时间】:2016-11-23 07:58:58
【问题描述】:
我正在通过 xib 实例化一家商店:
let cShop = UINib(nibName: "connectedShop", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! connectedShop
这家商店已经分配了这个自定义类:
import Foundation
import UIKit
class connectedShop : UIView{
@IBOutlet weak var bannerViewHight: NSLayoutConstraint!
@IBOutlet weak var bannerViewTop: NSLayoutConstraint!
@IBOutlet weak var bannerViewLeft: NSLayoutConstraint!
@IBOutlet weak var bannerViewRight: NSLayoutConstraint!
@IBOutlet weak var banerDiscount: UIImageView!
@IBOutlet weak var bannerImageShop: UIImageView!
@IBOutlet weak var bannerTitle: UILabel!
@IBOutlet weak var bannerDescription: UILabel!
@IBOutlet weak var bannerButton: UIButton!
@IBAction func bannerButtonAction(sender: UIButton) {
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
}
从代码中我这样称呼这家商店:
let cShop = UINib(nibName: "connectedShop", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! connectedShop
cShop.bannerTitle.text = "shopTitle" //work
shopContainer.addSubview(cShop)
cShop.bannerViewLeft.constant = 0 //make my app crash
cShop.bannerViewRight.constant = 0 // "
cShop.bannerViewTop.constant = 0 // "
当我设置bannerTitle.text 属性时,我的应用程序继续并调试我看到这个插座已初始化,但约束不是,当编译器在分配常量的行中时,它总是抛出相同的错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
调试我看到有一个插座被初始化:
有人知道为什么会这样吗?
这些是我的连接:
【问题讨论】:
-
您能否展示一下您是如何在 Interface Builder 中连接它们的?
-
编辑添加我的连接图片
-
你能打电话给
print(cShop.bannerTitle.text)吗?如果接收者为 nil,设置该值不会导致崩溃,这就是为什么它不会在此行崩溃,但bannerTitle也可能为 nil。 -
我查过了,不是零。此外,还有一个不是 nil 的 outlet,只有一个,bannerViewHight,是自定义类的第一个。这怎么可能?我不明白...
-
您能在 Intreface Builder 中选择您的 connectedShop,然后在右侧的 Connections Inspector 中选择吗?您将能够看到所有已连接的插座。
标签: ios swift swift2 storyboard interface-builder