我正在设计一个简单的数独应用程序,并且需要在单击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个不同的输出?
感谢您的帮助!
干杯
答案 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++
}