我以编程方式创建了一系列按钮。点击后如何识别它们?

时间:2017-01-30 13:00:58

标签: ios swift button

我有一个生成多个按钮的方法,所有按钮都具有相同的属性。按钮垂直排列,如下所示:

enter image description here

我需要的是,当点击每一个时,它能够识别它是从顶部开始的第一个,还是第二个等,打印“我是第一个/第二个/等等”

考虑到他们拥有的方法是一样的,我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

如果您只需要一个整数,请使用UIView中的tag属性。

答案 1 :(得分:1)

如果你有一系列按钮......

var buttons: [UIButton]

您可以按照他们在超级视图中的位置对其进行排序,以确定他们的顺序:

var sortedButtons: [UIButton] {
    return buttons.sorted(by: { $0.frame.origin.y < $1.frame.origin.y })
}

然后获取按钮的索引(反之亦然):

func index(of button: UIButton) -> Int {
    return sortedButtons.index(of: button)
}

func button(at index: Int) -> UIButton? {
    guard index < buttons.count else { return nil }
    return sortedButtons[index]
}

则...

@IBAction func buttonClicked(_ sender: UIButton) {
    guard let index = index(of: sender) else { return }
    sender.setTitle("I am \(index)", for: .normal)
}

如果您将按钮添加到故事板中的插座集合,这也会有效:

@IBoutlet var buttons: [UIButton]!

答案 2 :(得分:0)

快速而肮脏的方法:

拖动按钮的插座时,对于连接类型,选择&#34;插座收集&#34;。这将创造一个出口&#34; to&#34;一个按钮数组。然后,您可以将其余按钮拖放到此数组中。拖放的顺序将是数组中按钮的顺序。 然后您可以通过索引轻松访问它们。 enter image description here

警告:如果重新拖动集合,则很容易破解。