swift:向按钮数组添加动作

时间:2016-02-05 15:48:15

标签: ios uibutton swift2 xcode7 addtarget

我正在设计一个简单的数独应用程序,并且需要在单击81个按钮中的任何一个时触发操作。我在ViewController中创建了一个UIButtons数组:

class SudokuBoardController : UIViewController {
@IBOutlet var collectionOfButtons: Array<UIButton>?

  override func viewDidLoad() {

    collectionOfButtons.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)

    ...
  } 
}

我能够从故事板中将按钮添加到数组中确定,就在我尝试添加目标时,我收到此消息:

Value of type 'Array<UIButton>?' has no member addTarget

是否有解决此问题的方法不涉及为每个按钮创建81个不同的输出?

感谢您的帮助!

干杯

2 个答案:

答案 0 :(得分:4)

您有一个Array,因此您希望迭代数组中的UIButton。而且因为你在Swift中,你需要以Swifty方式这样做,而不是使用简单的for循环。

collectionOfButtons?.enumerate().forEach({ index, button in
    button.tag = index
    button.addTarget(self, action: "buttonClicked:", forControlEvents: .TouchUpInside)
})

这也很好地处理了collectionOfButtons是可选的这一事实,如果它是nil则不做任何事情,而不是崩溃。

答案 1 :(得分:2)

您需要遍历按钮数组并将目标添加到每个按钮。试试下面的代码

var index = 0
for button in collectionOfButtons! {
    button.tag = index // setting tag, to identify button tapped in action method
    button.addTarget(self, action: "buttonClicked:", forControlEvents: UIControlEvents.TouchUpInside)
    index++
}