tableView.reloadData() 之后,通用函数不会更新 tableview 单元格中标签的值
Generic function does not update the value of label in tableview cell after tableView.reloadData()
我有一个函数,我在其中递增标签的值,如下所示
@IBAction func buttonClicked(_ sender: UIButton) {
let indexPath = indexPath(sender: sender, tableView: profileTableView)
array[Int((indexPath.row))].likes = String(Int(array[Int((indexPath.row))].likes)!+1)
self.userProfileTableView.reloadData()
}
在上面的函数中,标签的 reloadData 值递增到下一个数字后,但是当我在如下扩展中将其设为通用函数时,标签的值不会递增
func buttonClicked(data:String,tableView:UITableView) {
let data = String(Int(data)!+1)
print("Incremented data", data)
tableView.reloadData()
}
我按如下方式调用函数,但标签没有更新为增量值。它保留旧值。
buttonClicked(data: feeds[Int((indexPath.row))].likes, tableView: userProfileTableView)
如有任何帮助,我们将不胜感激。谢谢。
你应该把代码改成这样。
let numLikes = Int(feeds[Int((indexPath.row))].likes)!
feeds[Int((indexPath.row)).likes = String(numLikes)
因为String
是值类型
当你这样做的时候。
buttonClicked(data: feeds[Int((indexPath.row))].likes, tableView: userProfileTableView)
func buttonClicked(data:String,tableView:UITableView) {
let data = String(Int(data)!+1)
print("Incremented data", data)
tableView.reloadData()
}
1) func buttonClicked
中的新值变量 data
将被创建并具有值 = feeds[Int((indexPath.row))].likes
2) 当您更改 data
时,它只会更改 data
而不会更改 feeds[Int((indexPath.row))].likes
查看 Value and Reference Type 了解更多信息。
实际上您没有在通用方法中使用更新后的值更新数组对象。
您可能必须更新数组中递增的值,或者将您的数组发送到具有选定索引的通用函数。
示例:
func buttonClicked(feeds:[Feed], index:Int, tableView:UITableView) {
feeds[index].likes = String(Int(feeds[index].likes)!+1)
tableView.reloadData()
}
但我不会说这是泛型函数,因为它用最少的代码用于最少的地方,并且没有泛型类型可供重用。
谢谢!
我有一个函数,我在其中递增标签的值,如下所示
@IBAction func buttonClicked(_ sender: UIButton) {
let indexPath = indexPath(sender: sender, tableView: profileTableView)
array[Int((indexPath.row))].likes = String(Int(array[Int((indexPath.row))].likes)!+1)
self.userProfileTableView.reloadData()
}
在上面的函数中,标签的 reloadData 值递增到下一个数字后,但是当我在如下扩展中将其设为通用函数时,标签的值不会递增
func buttonClicked(data:String,tableView:UITableView) {
let data = String(Int(data)!+1)
print("Incremented data", data)
tableView.reloadData()
}
我按如下方式调用函数,但标签没有更新为增量值。它保留旧值。
buttonClicked(data: feeds[Int((indexPath.row))].likes, tableView: userProfileTableView)
如有任何帮助,我们将不胜感激。谢谢。
你应该把代码改成这样。
let numLikes = Int(feeds[Int((indexPath.row))].likes)!
feeds[Int((indexPath.row)).likes = String(numLikes)
因为String
是值类型
当你这样做的时候。
buttonClicked(data: feeds[Int((indexPath.row))].likes, tableView: userProfileTableView)
func buttonClicked(data:String,tableView:UITableView) {
let data = String(Int(data)!+1)
print("Incremented data", data)
tableView.reloadData()
}
1) func buttonClicked
中的新值变量 data
将被创建并具有值 = feeds[Int((indexPath.row))].likes
2) 当您更改 data
时,它只会更改 data
而不会更改 feeds[Int((indexPath.row))].likes
查看 Value and Reference Type 了解更多信息。
实际上您没有在通用方法中使用更新后的值更新数组对象。
您可能必须更新数组中递增的值,或者将您的数组发送到具有选定索引的通用函数。
示例:
func buttonClicked(feeds:[Feed], index:Int, tableView:UITableView) {
feeds[index].likes = String(Int(feeds[index].likes)!+1)
tableView.reloadData()
}
但我不会说这是泛型函数,因为它用最少的代码用于最少的地方,并且没有泛型类型可供重用。
谢谢!