为什么在 Swift 中以编程方式声明约束时会出现错误?
Why do I get an error when declaring a constraint programmatically in Swift?
我在 UIViewController
class 中声明一个名为 Home
的约束。代码如下所示:
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)
完成后,您可以从 class 中的任何位置访问约束变量。只需确保变量在使用前已填充即可。
我在 UIViewController
class 中声明一个名为 Home
的约束。代码如下所示:
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)
完成后,您可以从 class 中的任何位置访问约束变量。只需确保变量在使用前已填充即可。