在哪里访问 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,您应该能够在整个视图控制器中访问它。
我读到我应该等到视图加载(或 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,您应该能够在整个视图控制器中访问它。