我有一个生成多个按钮的方法,所有按钮都具有相同的属性。按钮垂直排列,如下所示:
我需要的是,当点击每一个时,它能够识别它是从顶部开始的第一个,还是第二个等,打印“我是第一个/第二个/等等”
考虑到他们拥有的方法是一样的,我怎么能这样做?
答案 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)