gpt4 book ai didi

ios - 如何在 Swift 中初始化 UIButtons 的二维数组?

转载 作者:可可西里 更新时间:2023-11-01 01:37:27 28 4
gpt4 key购买 nike

我正在尝试将 UIButton 的一维数组转换为二维数组。为此,我需要用 nil 值实例化一个空的二维 UIButton 数组,然后我可以将其指向一维 UIButton 数组中的相应 UIButton。由于我是 Swift 的新手,所以我对 Optionals 感到困惑。这是我的一维数组:

@IBOutlet var noteUIButtonArray: [UIButton]?

而且我想将这个 128 大小的一维数组转换为具有 will 值的二维 [8][16] UIButton 数组。我该怎么做?提前致谢。

最佳答案

如果一个数组值可以是nil,那么它持有的类型必须是一个可选类型。您需要 UIButton? 的二维数组,它只是 UIButton?[[UIButton?]] 的数组。

数组有一个方便的初始化器,它获取项目的计数和你想要初始化的值并创建数组。在您的情况下,对于二维数组,您将需要使用此初始化器两次:一次用于数组的每一行,一次用于每一列。

内部初始化程序将创建一个 16 nil 值的数组:

let row:[UIButton?] = Array(count: 16, repeatedValue: nil)

外部初始化程序将创建一个 8 行的数组:

var buttons2D:[[UIButton?]] = Array(count: 8, repeatedValue: row)

您通常将这两者嵌套在一起以初始化二维数组,如下所示:

var buttons2D:[[UIButton?]] = Array(count: 8, repeatedValue: Array(count: 16, repeatedValue: nil))

请注意,原始数组是 UIButton[UIButton]?可选数组。这意味着该数组可能根本不存在(它可以是 nil),或者如果它确实存在,它包含 UIButton 类型的项目。此数组不能包含 nil 值。访问此数组中的值时,必须打开数组值。一个安全的方法是使用可选链

例如,要访问 noteUIButtonArray 中的第一个按钮,您可以编写:

let button = noteUIButtonArray?[0]

? 展开 可选 数组并允许您访问项目 0。如果 noteUIButtonArraynil,则 可选链 将为 nil,因此 button将收到值 nil。由于button可以接收nil,所以它的类型是UIButton?。因此,即使数组不能包含可选值,您也会从可选链收到一个可选值,然后需要解包才能使用它。

然后您可以遍历您的 128 按钮数组并将它们分配给您的二维数组:

if noteUIButtonArray?.count >= 128 {
var i = 0

for row in 0..<8 {
for col in 0..<16 {
buttons2D[row][col] = noteUIButtonArray?[i++]
}
}
}
else {
print("Warning: there aren't 128 buttons")
}

您可能希望以不同的顺序分配按钮。这只是一种方法的示例。

关于ios - 如何在 Swift 中初始化 UIButtons 的二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35110336/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com