如何在数组中引用UILabel或UIButton集合indexPath

时间:2018-03-24 22:31:29

标签: arrays swift uibutton uilabel indexpath

@IBOutlet var buttons: [UIButton]!
@IBOutlet var labels: [UILabel]!

@IBAction func cevapSeçildi(_ sender: UIButton) {
    if sender == buttons[0] {
        `enter code here`
        labels[0].backgroundColor = UIColor.yellow 
    }
}

我想要这个......

var x : Int

if sender == buttons[x] { labels[x].backgroundColor = UIColor.yellow }
你可以帮我吗

2 个答案:

答案 0 :(得分:0)

您可以使用

获取按钮的索引
var index = buttons.index(of: sender)

然后设置

labels[index].backgroundColor = UIColor.yellow

如果您想同时将所有其他按钮设置为其他颜色,请考虑以下事项:

let buttonIndex = buttons.index(of: sender)
for var label in labels {
    if(labels.index(of: label) == buttonIndex) {
        label.backgroundColor = UIColor.yellow
    } else {
        label.backgroundColor = UIColor.white
    }
}

答案 1 :(得分:0)

有几点:

  1. 使用按钮数组映射到单元格索引仅适用于单节表视图或集合视图。如果您有分段表视图或行和列中的集合视图,那么该方法将无法正常工作。

  2. 如果要在所选单元格上将标签设置为黄色,而对所有其他单元格使其为白色,则更改所有单元格无效。表视图/集合视图一次只显示几个单元格,滚动时,单元格将被回收并用于表视图/集合视图中的不同索引。

  3. 如果您让我知道您是否正在使用表格视图或集合视图,我可以向您展示更好的方法。

    编辑:

    由于您未使用表格视图或集合视图,因此直接操作标签确实有意义:

    recv