对,所以我总是用函数初始化,但我是这个快速初始化的新手,所以这样我正确地初始化了这个2d数组。
var board = [[UIButton]](){
init(array:UIButton){
board = [
[b0,b1,b2],
[b3,b4,b5],
[b6,b7,b8]
]
}
}
答案 0 :(得分:1)
您的board
变量必须使用一系列按钮进行初始化,因此在包含您的电路板的类中,您指定了init(boardButtons:)
初始值设定项,用于初始化board
变量:
class ClassThatContainsBoard {
var board: [[UIButton]]
init(boardButtons: [UIButton]) {
let b = boardButtons
board = [
[b[0], b[1], b[2]],
[b[3], b[4], b[5]],
[b[6], b[7], b[8]]
]
}
}
如果您的班级本身知道哪些按钮应该包含电路板,则您无需指定将按钮作为参数的初始化器。变量可以使用闭包来将自己初始化为默认值:
class ClassThatContainsBoard {
var board: [[UIButton]] = {
var numRows = 3
var numCols = 3
var newBoard = [[UIButton]]()
for row in 0..<numRows {
var boardRow = [UIButton]()
for col in 0..<numCols {
let buttonNumber = (row + 1) * (col + 1)
let button = UIButton(type: .Custom)
button.setTitle("\(buttonNumber)", forState: .Normal)
boardRow.append(button)
}
newBoard.append(boardRow)
}
return newBoard
}()
}
因此,当初始化ClassThatContainsBoard
的实例时,将执行闭包并返回board
的默认值。在这里,它刚刚初始化为3x3按钮阵列,每个按钮的标题设置在棋盘上的编号位置。