Swift 5. 显示来自第二个表格视图单元格的数组(第二个 indexpath.row)
Swift 5. Display array from the 2nd tableview cell ( 2nd indexpath.row )
我有一个包含 2 个原型单元格的 3 行表格视图。第一个原型单元只有一个视图。第二个原型单元有一个按钮。
第一个原型单元格只有 1 行,也是第一个 indexpath.row
第二个原型单元格有 2 行。 (第二和第三 indexpath.row )
我想将我的模型(数组)与第 2 行和第 3 行合并。但是应用程序崩溃并显示超出范围。
表格视图class
let modelArray = [phone, remote]
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1 + modelArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ->
UITableViewCell {
if indexPath.row < 1 {
let cell = tableView.dequeueReusableCell(withIdentifier: "CELL1", for:
indexPath) as! CELL1
cell.view.backgroundColor = .red
return cell
}
let cell2 = tableView.dequeueReusableCell(withIdentifier: "CELL2", for: indexPath)
CELL2
这是我收到超出范围错误的地方。 (我也试过没有 + 1 )
cell2.configure(title: modelArray[indexpath.row + 1])
return cell2
}
CELL2 class
@IBOutlet weak var buttonName: UIButton!
private var title: String = ""
func configure(title: String) {
self.title = title
buttonName.setTitle(title, for: .normal)
}
请看逻辑:cellForRow
被调用了 3 次 (1 + 2),但数组中索引 3 处没有项(没有 +1
时索引 2 处也没有)。
根据代码,indexPath.row == 1
处的单元格应该显示数组中的第一项(索引 0),indexPath.row == 2
处的单元格应该显示第二项(索引 1)。
所以你必须减去 1
cell2.configure(title: modelArray[indexpath.row - 1])
因为您的 modelArray 只有 2 个元素,而您正在尝试获取第 3 个元素值。
假设当 indexPath
为 0 时,tableview
呈现 CELL1,当 indexPath
递增时,我们可以说当 indexPath
为 1 时,您得到来自您的 modelArray 的值如下所示:
cell2.configure(title: modelArray[indexpath.row + 1])
这是获取值 modelArray[1+1],在 modelArray[2] 中转换,但 modelArray 不包含 modelArray[2],它只有 0 和 1 个元素。
尝试从当前 indexPath
中减去 1。
cell2.configure(title: modelArray[indexpath.row - 1])
我有一个包含 2 个原型单元格的 3 行表格视图。第一个原型单元只有一个视图。第二个原型单元有一个按钮。 第一个原型单元格只有 1 行,也是第一个 indexpath.row 第二个原型单元格有 2 行。 (第二和第三 indexpath.row )
我想将我的模型(数组)与第 2 行和第 3 行合并。但是应用程序崩溃并显示超出范围。
表格视图class
let modelArray = [phone, remote]
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1 + modelArray.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) ->
UITableViewCell {
if indexPath.row < 1 {
let cell = tableView.dequeueReusableCell(withIdentifier: "CELL1", for:
indexPath) as! CELL1
cell.view.backgroundColor = .red
return cell
}
let cell2 = tableView.dequeueReusableCell(withIdentifier: "CELL2", for: indexPath)
CELL2
这是我收到超出范围错误的地方。 (我也试过没有 + 1 )
cell2.configure(title: modelArray[indexpath.row + 1])
return cell2
}
CELL2 class
@IBOutlet weak var buttonName: UIButton!
private var title: String = ""
func configure(title: String) {
self.title = title
buttonName.setTitle(title, for: .normal)
}
请看逻辑:cellForRow
被调用了 3 次 (1 + 2),但数组中索引 3 处没有项(没有 +1
时索引 2 处也没有)。
根据代码,indexPath.row == 1
处的单元格应该显示数组中的第一项(索引 0),indexPath.row == 2
处的单元格应该显示第二项(索引 1)。
所以你必须减去 1
cell2.configure(title: modelArray[indexpath.row - 1])
因为您的 modelArray 只有 2 个元素,而您正在尝试获取第 3 个元素值。
假设当 indexPath
为 0 时,tableview
呈现 CELL1,当 indexPath
递增时,我们可以说当 indexPath
为 1 时,您得到来自您的 modelArray 的值如下所示:
cell2.configure(title: modelArray[indexpath.row + 1])
这是获取值 modelArray[1+1],在 modelArray[2] 中转换,但 modelArray 不包含 modelArray[2],它只有 0 和 1 个元素。
尝试从当前 indexPath
中减去 1。
cell2.configure(title: modelArray[indexpath.row - 1])