swift:向一组按钮添加一个动作

col*_*mcp 1 uibutton ios addtarget xcode7 swift2

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

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

  override func viewDidLoad() {

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

    ...
  } 
}
Run Code Online (Sandbox Code Playgroud)

我可以从情节提要中将按钮添加到 Array 中,就在我尝试 addTarget 时,我收到以下消息:

Value of type 'Array<UIButton>?' has no member addTarget
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助!

干杯

Gav*_*vin 5

您有一个Array,因此您想遍历UIButton数组中的s。并且因为您使用的是 Swift,所以您会希望以 Swifty 的方式进行操作,而不是使用简单的for循环。

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

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