为什么在 Swift 中以编程方式声明约束时出现错误



我在一个名为 HomeUIViewController类中声明了一个约束。代码如下所示:

class Home: UIViewController {
@IBOutlet weak var buttonUpgrade: UIButton!
var constraint = NSLayoutConstraint (item: buttonUpgrade, 
attribute: NSLayoutAttribute.Bottom, 
relatedBy: NSLayoutRelation.Equal, 
toItem: self.view, 
attribute: NSLayoutAttribute.Bottom, 
multiplier: 1, 
constant: 500)
...
}

但是,我收到此错误:Home.type does not have a member named buttonUpgrade。为什么?

您可以从此处下载该项目:https://www.dropbox.com/s/x7avclri0ijw3pd/DemoConstraints.zip?dl=0。

如前所述,您不能在函数之外编写此类代码。但是你可以做的是像这样声明你的变量全局(在函数之外):

var constraint:NSLayoutConstraint!

然后你可以初始化它,例如你的viewDidLoad方法,该方法将被调用一次:

constraint = NSLayoutConstraint (item: buttonUpgrade, 
attribute: NSLayoutAttribute.Bottom, 
relatedBy: NSLayoutRelation.Equal, 
toItem: self.view, 
attribute: NSLayoutAttribute.Bottom, 
multiplier: 1, 
constant: 500)

完成此操作后,您可以从类中的任何位置访问约束变量。只需确保变量在使用前已填充即可。

最新更新