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

标签 ios swift xcode7 iboutlet

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

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

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

最佳答案

看起来您正在尝试在没有正确引用的情况下访问实例方法 (viewDidLoad()) 中的类常量。类常量属于类,而不是实例,所以你不能这样写:

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
    }
}

关于ios - 在哪里访问 IBOutlet var 并使用它来定义类可访问的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37397147/

相关文章:

ios - 是否可以通过 iDevice 闪电端口访问数据?

xcode - 如何使用 key 在 Realm (swift 2) 中获取数据

ios - ios从用户语音中捕获音频文件

ios - 如何在任何尺寸设备上将 ScrollView 的内容大小设置为框架的最大宽度

java - Swift vs Java - 填充大数组的速度

swift - Swift 中可选值的用途是什么?

Xcode beta 7 - Do-While 循环 SWIFT 错误

xcode7 - 使用 Xcode 7、iOS 9 运行项目时出现 "Application windows are expected to have a root view controller at the end of application launch"错误

ios - “您的请求无法完成”-iTunes网址错误

ios - FMDB stringforcolumn 为 nil