代码之家  ›  专栏  ›  技术社区  ›  Rawr

按名称获取outlet变量

  •  3
  • Rawr  · 技术社区  · 7 年前

    @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。

    3 回复  |  直到 7 年前
        1
  •  4
  •   allenh    6 年前

    在纯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!"
    }
    
        2
  •  2
  •   סטנלי גרונן Abhishek Singh    4 年前

    if let aLabel = value(forKey: "label1") as? UILabel {
        aLabel.text = "Hello World"
    }
    
        3
  •  1
  •   Fangming    7 年前

    有一种更容易实现目标的方法。在您的 viewDidLoad ,为您的插座提供一个唯一的标签号,而不是0

    label1.tag = 1
    

    然后,只要你想访问它

    if let theLabel = self.view.viewWithTag(1) as? UILabel {
        theLabel.text = "hello, world!"
    }