Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSLayoutConstraint插座始终为零,而其他插座为';T_Ios_Swift_Swift2_Storyboard_Interface Builder - Fatal编程技术网

Ios NSLayoutConstraint插座始终为零,而其他插座为';T

Ios NSLayoutConstraint插座始终为零,而其他插座为';T,ios,swift,swift2,storyboard,interface-builder,Ios,Swift,Swift2,Storyboard,Interface Builder,我正在通过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 bannerViewH

我正在通过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
调试我看到有一个已初始化的出口:

有人知道为什么会这样吗

以下是我的观点:

我也有同样的问题。
将约束输出更改为强。

如何使约束输出变强: 只需从声明中删除弱

@IBOutlet weak var bannerViewHight: NSLayoutConstraint!


为所有人做这件事,就这样。

你能展示一下你是如何在Interface Builder中连接他们的吗?编辑后添加我的连接图片你能调用
打印(cShop.bannerTitle.text)
?如果接收器为nil,则设置该值不会导致崩溃,这就是为什么它不会在此行崩溃,但是
bannerTitle
也可能为nil。我检查了,它不是nil。此外,还有一个outlet不是nil,只有一个,bannerViewHight,自定义类的第一个。这怎么可能?我不明白…你能在Intreface Builder中选择你的connectedShop,然后选择右边的Connections Inspector吗?您将能够看到所有已连接的插座。这解决了我的问题,但我不明白它为什么起作用。你能解释一下原因吗@SergioM@YusufKamilAK当然由于引用很弱,约束的引用将在生命周期的某个点被删除。@SergioM这并不能真正解释问题所在。当然,在我的例子中,视图是一个单元格。当重新使用单元格时,由于引用较弱,因此取消分配了约束。
@IBOutlet var bannerViewHight: NSLayoutConstraint!