swift: 向按钮数组添加一个动作
swift: Adding an action to an array of buttons
我正在设计一个简单的数独应用程序,需要在单击 81 个按钮中的任何一个时触发一个操作。我在 ViewController 中创建了一个 UIButton 数组:
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 个不同的输出?
感谢您的帮助!
干杯
您需要遍历按钮数组并将目标添加到每个按钮。试试下面的代码
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++
}
你有一个 Array
,所以你想遍历数组中的 UIButton
。因为你在 Swift,你会想要以 Swifty 的方式这样做,而不是使用简单的 for
循环。
collectionOfButtons?.enumerate().forEach({ index, button in
button.tag = index
button.addTarget(self, action: "buttonClicked:", forControlEvents: .TouchUpInside)
})
这也很好地处理了 collectionOfButtons
是可选的这一事实,如果它是 nil
,则不执行任何操作,而不是崩溃。
我正在设计一个简单的数独应用程序,需要在单击 81 个按钮中的任何一个时触发一个操作。我在 ViewController 中创建了一个 UIButton 数组:
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 个不同的输出?
感谢您的帮助!
干杯
您需要遍历按钮数组并将目标添加到每个按钮。试试下面的代码
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++
}
你有一个 Array
,所以你想遍历数组中的 UIButton
。因为你在 Swift,你会想要以 Swifty 的方式这样做,而不是使用简单的 for
循环。
collectionOfButtons?.enumerate().forEach({ index, button in
button.tag = index
button.addTarget(self, action: "buttonClicked:", forControlEvents: .TouchUpInside)
})
这也很好地处理了 collectionOfButtons
是可选的这一事实,如果它是 nil
,则不执行任何操作,而不是崩溃。