在swift中使用array元素作为var UILabel名称

时间:2017-12-10 23:12:17

标签: ios swift

我正在尝试构建一个键/值对,以便稍后进行引用。 该数组将保存一个索引引用,并在其中包含它的值。其中一个值是与索引匹配的视频,另一个值是相应的标签名称(因此我可以在播放视频时更改颜色)。

这是我的代码:

class ViewController: UIViewController {

    var videos = [5: ["urltovideo1", "locationOne"], 7: ["urltovideo2", "locationTwo"]]
    var bg: UILabel!

    @IBOutlet weak var locationOne: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        bg = videos[5]![1]
        bg.backgroundColor = UIColor.green
    }
}

我收到错误"无法指定类型'字符串'的值输入' UILabel!'" 我试过" bg = UILabel(视频[5]![1])"并收到错误""参数标签'(_:)'不匹配任何可用的重载""

有关如何修复它的想法或更好的实现方法吗?

1 个答案:

答案 0 :(得分:0)

以下是您的解决方案:

@objc var locationOne: UILabel!
@objc var locationTwo: UILabel!
var videos = [5: ["urltovideo1", "locationOne"], 7: ["urltovideo2", "locationTwo"]]
var bg: UILabel! = UILabel()

override func viewDidLoad() {
    super.viewDidLoad()

    if let bg = self.value(forKey: videos[5]![1]) as? UILabel {
        bg.backgroundColor = UIColor.green
    }
}

需要@objc才能使self.value(forKey:)正常工作 - 您必须为要通过此方法访问的每个媒体添加它。