我已经为UIViewController创建了一个扩展,我想声明一些可以在整个扩展中使用的变量。下面是我的代码

extension UIViewController {

var mssgTopConstraint1: NSLayoutConstraint?
var mssgTopConstraint2: NSLayoutConstraint?
var mssgIconTop1: NSLayoutConstraint?
var mssgIconTop2: NSLayoutConstraint?
var isCheviClicked: Bool = false

}

我有此错误扩展名,可能不包含所有五个变量的存储属性。

最佳答案

错误非常明显,您不能在扩展中添加存储的属性,只能使用计算的属性。

您可以子类化UIViewController并在自定义类中声明这些属性:

class MyViewController: UIViewController {

    var mssgTopConstraint1: NSLayoutConstraint?
    var mssgTopConstraint2: NSLayoutConstraint?
    var mssgIconTop1: NSLayoutConstraint?
    var mssgIconTop2: NSLayoutConstraint?
    var isCheviClicked: Bool = false
}

这是一种更干净的方法,因为用这些属性扩展UIViewController并没有太大意义,因为并非所有控制器都需要这些属性。

您可以实例化此新控制器,或者将XIB / Storyboard中的类名称设置为MyViewController。这样,您可以使用新的控制器和新声明的属性。

关于ios - 如何在Swift的扩展名中声明NSLayoutConstraint类型的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52064648/

10-10 19:04