【发布时间】:2020-10-09 15:45:34
【问题描述】:
作为一个小项目,我想制作我自己版本的this little game。
为此,我需要一个 UIButton 网格,因此我考虑使用 2D 数组来解决此问题。 这就是我到目前为止所得到的:
class ViewController: UIViewController {
var btnArr: [[UIButton]] = [] // CREATE A 2D-ARRAY OF UIBUTTONS
override func viewDidLoad() {
super.viewDidLoad()
buildBoard()
}
@objc func buttonAction(sender: UIButton!) {
print("Button " + sender.title(for: .normal)! + " tapped")
}
func buildBoard(){
let btnSize = 40
var x = 1
var xPos = 0
while(x<10){
var y = 5
var yPos = 0
while(y<14){
let button = UIButton(frame: CGRect(x: x*btnSize, y: y*btnSize, width: btnSize, height: btnSize))
button.layer.cornerRadius = 0.5 * button.bounds.size.width
button.clipsToBounds = true
button.backgroundColor = .lightGray
button.setTitle(String(xPos) + ", " + String(yPos), for: .normal)
button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
self.view.addSubview(button)
btnArr[xPos][yPos] = button // ADD THE BUTTONS TO THE 2D-ARRAY
y+=1
yPos+=1
}
xPos+=1
x+=1
}
}
}
x 和 xPos 不是那么漂亮,但我想将网格居中并从 (0,0) 而不是 (1,5) 开始计数按钮。
我的问题:
我想将创建的按钮添加到我的数组“btnArr”,但它给了我一个线程 1:致命错误:索引超出范围。我发现了问题,因为我不能像这样将按钮添加到我的数组中,因为它是空的。但我不知道如何使这项工作......
是否可以使用此 2d-array-implementation 进行链接中所见的所需偏移量?
感谢您的帮助!!!
如果你想加入我的项目,请写信给我 :)
【问题讨论】:
标签: swift xcode multidimensional-array uibutton