我读到我应该等到 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/