停止动态 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 很好并且更易于实现。
我有一个如下所示的动态 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 很好并且更易于实现。