按名称获取出口变量
Get an outlet variable by name
在 swift 中寻找以编程方式访问插座的方法:
@IBOutlet var label1: UILabel?
var outletName = "label1"
view[outletName].text = "hello, world!"
像这样创建我自己的自定义映射是唯一的方法吗?
@IBOutlet var label1: UILabel?
let outlets = ["label1": label1]
let outletName = "label1"
outlets[outletName].text = "hello, world!"
编辑: 看来我原来的问题措辞不当,让我们再试一次:
我正在寻找通过一些字符串标识符访问变量。在我最初的问题中,我试图询问是否可以通过变量本身的名称以某种方式访问变量。 IE 使用变量名称 "label1".
的字符串访问变量 label1
有一种更简单的方法可以实现您的目标。首先在你的 viewDidLoad
中,给你的出口一个唯一的标签号,而不是 0
label1.tag = 1
然后,只要你想访问它
if let theLabel = self.view.viewWithTag(1) as? UILabel {
theLabel.text = "hello, world!"
}
将字符串转换为 属性 访问在纯 Swift 中实际上有点困难。
您可以使用一些 objective-c API 来帮助您。
// Mark your outlet variable as dynamic
@IBOutlet dynamic var label1: UILabel?
var outletName = "label1"
// Then you can access it via a key path (aka string)
if let myProperty = value(forKey: outletName) as? UILabel {
myProperty.text = "Hello, world!"
}
Swift 5 版本:
if let aLabel = value(forKey: "label1") as? UILabel {
aLabel.text = "Hello World"
}
在 swift 中寻找以编程方式访问插座的方法:
@IBOutlet var label1: UILabel?
var outletName = "label1"
view[outletName].text = "hello, world!"
像这样创建我自己的自定义映射是唯一的方法吗?
@IBOutlet var label1: UILabel?
let outlets = ["label1": label1]
let outletName = "label1"
outlets[outletName].text = "hello, world!"
编辑: 看来我原来的问题措辞不当,让我们再试一次:
我正在寻找通过一些字符串标识符访问变量。在我最初的问题中,我试图询问是否可以通过变量本身的名称以某种方式访问变量。 IE 使用变量名称 "label1".
有一种更简单的方法可以实现您的目标。首先在你的 viewDidLoad
中,给你的出口一个唯一的标签号,而不是 0
label1.tag = 1
然后,只要你想访问它
if let theLabel = self.view.viewWithTag(1) as? UILabel {
theLabel.text = "hello, world!"
}
将字符串转换为 属性 访问在纯 Swift 中实际上有点困难。
您可以使用一些 objective-c API 来帮助您。
// Mark your outlet variable as dynamic
@IBOutlet dynamic var label1: UILabel?
var outletName = "label1"
// Then you can access it via a key path (aka string)
if let myProperty = value(forKey: outletName) as? UILabel {
myProperty.text = "Hello, world!"
}
Swift 5 版本:
if let aLabel = value(forKey: "label1") as? UILabel {
aLabel.text = "Hello World"
}