有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)
}


但不建议您这样做,因为您当前所做的更改会从单元格中删除边框,并将其添加到适合重新加载的其他边框

10-08 11:00