有50个元件的阵列data
和我显示它们在UITable图。我对每一个的UITableViewCell一个按钮,当我点击该按钮我加入了边缘,将其高亮显示该单元。从突出显示的单元的数据存储在另一个阵列highlightedData
。此highlightedData
阵列的长度总是2
因为我只需要在表格视图中突出显示的两个单元格。当我选择第三小区,我删除元素highlightedData.remove(at: 1)
和从highlightedData
第三小区追加新数据。我想从highlightedData
数组中删除数据时删除单元格的边框。有一种方法,我可以得到基于其数据的data
阵列中的索引从表视图细胞?我不希望由indexPath
返回的单元格而是由integer
返回的单元格。
这是我更好地理解代码:
func buttonClicked(_ cell: ExampleTableViewCell) {
guard let indexPath = tableView.indexPath(for: cell) else {
return
}
if highlightedData.count == 2 {
// here I want to get the cell of the element at the index: Int = data.indexOf([highlightedData[1]])
highlightedData.remove(at: 1)
}
highlightedData.append(data[indexPath.row])
if highlightedData.count == 2 {
print("open a new vc")
}
}
最佳答案
由于在cellForRowAt
内部,您应该有类似
// suppose border for someView
cell.someView.layer.borderWidth = highlightedData.contains(indexPath.row) ? 2 : 0
然后仅重新加载的
buttonClicked
表结束时,也可以做if let cell = tableView.cellForRow(at: IndexPath(row:highlightedData[1], section: 0)) as? ExampleTableViewCell {
print(cell)
}
但不建议您这样做,因为您当前所做的更改会从单元格中删除边框,并将其添加到适合重新加载的其他边框