停止动态 Table 重新加载 IndexPath - Swift

Stop Dynamic Table Reloading IndexPath - Swift

我有一个如下所示的动态 table 视图,它根据 indexpath.row 显示数组的名称。在每个单元格中,我都有一个按钮可以更改名称,就像下面的代码中那样对单元格进行删除。当我加载 table 时,假设行加载如下:

名字 1

名字2

名字 3

姓名4

名字5

姓名 6

姓名 7

姓名 8

然后我单击按钮并将 Name4 更改为 NewName,例如。单击按钮时它会更改,但是当您在 table 中滚动时,当它再次到达 Name4 的 indexpath.row 时(在本例中为 indexpath.row==3),NewName 变回 Name4 .当 indexpath.row 发生变化时,如何停止每次加载 table?或者我怎样才能找到解决这个问题的另一种方法?

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath:   NSIndexPath) -> UITableViewCell {
    let cell:NamesCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! NamesCell

    cell.NameCell1003 = self
    cell.nameLbl.text = self.resultsNameArray[indexPath.row]

    return cell
}

func NameCell1003(cell: NamesCell)
{
    cell.nameLbl.text= "NewName"
}

rmaddy 是正确的,您想要更改数组中的基础数据并重新加载 TableView 以实现您想要的行为。

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath:   NSIndexPath) -> UITableViewCell {
    let cell:NamesCell = tableView.dequeueReusableCellWithIdentifier("Cell") as! NamesCell

    cell.nameLbl.text = self.resultsNameArray[indexPath.row]

    return cell
}

func NameCell1003(cell: NamesCell)
{
    self.resultsNameArray[indexYouWantToChange] = "NewName"
    self.tableView.reloadData()
}

您将需要对 UITableView 的引用,通常这是一个 IBOutlet,以便对其调用 reloadData。在代码中我只是称它为"tableView"。如果您的 resultsNameArray 非常大,认为超过数百项,您可以使用以下方法进行调查:

func reloadRowsAtIndexPaths(_ indexPaths: [NSIndexPath],
           withRowAnimation animation: UITableViewRowAnimation)

这样您就可以只更新需要的行。对于像您在问题中陈述的那样的少量行,reloadData 很好并且更易于实现。