ios - 如何确定uitableview中是否更改了单元格索引路径

时间:2016-12-03 00:36:19

标签: ios swift uitableview

我有两个问题:

1-是否可以知道indexPath.row中的单元格UITableView是否发生了变化?例如,如果我在 index(0)处有一个元素,然后我添加另一个元素,则第一个元素将位于 index(1)。有可能检测到这种变化吗?

2-是否可以通过单元格标题来查找元素的索引?例如,我在tableview中有X,Y,Z元素,我想知道放置哪个单元格'X'?

谢谢你们,

1 个答案:

答案 0 :(得分:0)

一般来说,隔离模型和视图是常见的做法。我的意思是将数据的存储和呈现它的视图分开。

例如,您可能正在创建颜色名称的表视图。因此,您可以将颜色名称数组存储为视图控制器的属性

class UIColorViewController: UITableViewController{

    let colors = ["Black", "Blue", "Yellow"]

我确信你正在做,你可以将视图控制器指定为表视图的数据源,这样你就可以告诉它你想要多少个部分,一个部分你想要的行数,以及什么渲染到细胞上

在这个基本示例中,部分的数量可以是1,并且此部分中的行数将是colors数组的长度。现在,当将数据渲染到单元格上时,您只需通过索引路径索引颜色数组。

fun tableView(UITableView, cellForRowAt: IndexPath){
    var color = colors[indexPath.row]
    cell = //dequeue cell
    cell.textLabel?.text = color
    return cell
}

因此,通过从视图中分离数据,如果要查找特定值所在的单元格,可以只搜索颜色所在的数组,返回的索引将等于此颜色所在的单元格或将取决于该单元格是否已渲染到屏幕上。

例如使用colors数组,如果我正在寻找“Blue”

for (index, color) in self.colors.enumerated{
    if color == 'Blue'{
        print("Found Blue at index \(index)")
    }
 }

如果要添加单元格或删除单元格,只需修改存储模型数据的颜色数组,执行相应的表视图相关操作,并且不变量仍然是数组中颜色的索引将等于表视图中单元格的索引。