Dan*_*l G 1 arrays button ios swift
我已经使用UIButtons在UiKit中制作了一系列复选框:
@IBOutlet weak var Box1: UIButton!
@IBOutlet weak var Box2: UIButton!
@IBOutlet weak var Box3: UIButton!
....
@IBOutlet weak var Box59: UIButton!
// Gives the button an action
@IBAction func Box1(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
}
@IBAction func Box2(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
}
@IBAction func Box3(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
}
....
@IBAction func Box59(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
}
// Creates button images of checkbox and unchecked box
var BoxON = UIImage(named: "CheckBox")
var BoxOFF = UIImage(named:"UnCheckBox")
// Allows the button to be set to the image, if selected or not
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
Box1.setImage(BoxOFF, for: .normal)
Box1.setImage(BoxON, for: .selected)
Box2.setImage(BoxOFF, for: .normal)
Box2.setImage(BoxON, for: .selected)
Box3.setImage(BoxOFF, for: .normal)
Box3.setImage(BoxON, for: .selected)
....
Box59.setImage(BoxOFF, for: .normal)
Box59.setImage(BoxON, for: .selected)
}
Run Code Online (Sandbox Code Playgroud)
这是制作尽可能多的复选框所必需的所有代码。但是,每个复选框都需要在故事板上的正确位置创建/移动按钮,并将按钮从故事板上链接到刚刚编码的按钮变量。这可能会花费很多时间,因为每个视图控制器需要100多个按钮。
是否有通过制作按钮数组来实现此目的的更快方法?或类似的东西?
可以声明一个IBOutletas数组
创建一个IBOutletas数组
@IBOutlet var boxes : [UIButton]!
Run Code Online (Sandbox Code Playgroud)将所有按钮连接到同一插座(按所需顺序)
在viewDidAppear使用循环或forEach
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
boxes.forEach {
$0.setImage(BoxOFF, for: .normal)
$0.setImage(BoxON, for: .selected)
}
}
Run Code Online (Sandbox Code Playgroud)向按钮添加唯一标签(可选)。
IBAction并将所有按钮连接到动作使用switch语句通过数组中的索引或标签来区分按钮
@IBAction func boxTouched(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
let index = boxes.index(of: sender)!
switch index {
// handle the cases
}
}
@IBAction func boxTouched(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
switch sender.tag {
// handle the cases
}
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1914 次 |
| 最近记录: |