在哪里访问 IBOutlet var 并使用它来定义 class 可访问的常量

Where to access IBOutlet var and use it to define a constant accessible to the class

我读到我应该等到视图加载(或 viewDidLoad()),然后再尝试访问 IBOutlet 的属性。

我的问题是:我想将 IBOutlet UIButton 的标题颜色 属性 存储为可供整个 ViewController class 访问的常量,或者至少来自 class 中的 IBAction 方法 - 但似乎这超出了范围,因为我在 viewDidLoad() 中定义常量并且我无法在其他任何地方访问它。我需要在 viewDidLoad()IBAction 方法中使用它。

我无法在任何 class 方法之外定义它,因为我收到一条错误消息 Instance member 'lowFilterButton' cannot be used on type ViewController 那么我该怎么办?我可以将颜色硬编码到这两种方法中,但我想找到更好的解决方案以供将来参考。

您似乎试图在没有正确引用的情况下访问实例方法 (viewDidLoad()) 中的 class 常量。 Class 常量属于 class,不是实例所以你不能写:

color = ...      // invalid
self.color = ... // invalid

改为这样做:

class ViewController: UIViewController {
    static var color: UIColor!
    @IBOutlet weak var myButton: UIButton!

    func viewDidLoad() {
        super.viewDidLoad()

        // Refer to the class of the current instance
        self.dynamicType.color = myButton.tintColor

        // You can also refer to the class by name
        ViewController.color = myButton.tintColor
    }
}

如果您想轻松访问常量颜色,请在 viewDidLoad() 之前定义它,如下所示:

let myColor = UIcolor.[NAME OF COLOR]

然后当你想设置按钮的颜色时,这样做:

lowFilterButton.tintColor = myColor

只要您在 viewDidLoad 之外定义 myColor,您应该能够在整个视图控制器中访问它。