使用prepareForReuse函数从UTRableCell类中的ViewController中重置var
我有一个UITableView有一些单元格。这些单元格有数字,我将所有这些数字加起来然后显示总数(grandTotal)。使用prepareForReuse函数从UTRableCell类中的ViewController中重置var
override func viewWillAppear(_ animated: Bool) {
grandTotal = 0.00
}
这是应用程序的简化版本,我使用CoreData来存储值。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
grandTotal! += grandTotal + 100
}
每次调用cellForRowAt时,grandTotal不会重置为0.00的问题。我有一个自定义的UITableViewCell这个功能。
override func prepareForReuse() {
print("recalculate totals!!!!!!!")
}
的UITableView的加载后,并正确显示所有数据,如果用户刷卡时,它触发cellForRowAt功能,然后重新计算grandTotal,而不是从0.00开始,但何总为后加载tableView。
我想在perpareForReuse函数中将grandTotal var设置回0.00,但不确定如何再次访问自定义单元类中的grandTotal var。
grandTotal var是在我的ViewController类中创建的。
****编辑****
我有一个跟踪贷款的应用程序。所以你创建了一个你想添加到你的列表中的人。该人可以拥有多个贷款。有些是你借的钱(正数),为什么别人是你借的钱(负数)。 TableView显示您应用中的所有人员。每个单元格还将每个人的所有贷款累加起来,并显示该人的正数或负数。我想要做的是将每个人的所有总数加起来,并显示为总计。我得到了这个工作,但是如果我在桌面上向上或向下滑动,它会重新计算我的总计,而不是从0开始,它使用当前的数字。
似乎有人建议我不应该在cellForRowAt函数中进行计算,我只是不确定如何去做,因为我使用单元格indexPath将人员数据提取出来的CoreData。
let person = fetchedResultsController.fetchedObjects![indexPath.row]
又好像如果我能想出一个办法,给每个prepareForReuse func被调用时可能的工作设置grandTotal回0。我只是不知道如何访问的ViewController
我想是这样的内部的变种:
let viewController:ViewController = ViewController(nibName: nil, bundle: nil)
print("\(String(describing: viewController.oweTotal)) owe total from perpare") --> nil
print("\(String(describing: viewController.owedTotal)) owed total from perpare") --> nil
但我觉得我只是创建一个新的VC,而不是引用已经存在的一个。
从示例代码中很难判断这里究竟发生了什么。
当一个单元出列“取下视图”时,它被“回收”。当你向上滑动时,正在cellForRowAt ... func中配置循环单元。
从代码所示,在这个例子中,你可以通过在表视图跟踪最大的“IndexPath”的计算“总计”
max = max(max,indexPath.row)
,最大是在类初始化一个变种0
正因为这个原因,你不应该在'cellForRowAt'中进行计算。您应该将准备好的数据传递给您的表格视图,并根据您的数据源进行计算。 –
您的“总计”是否仅仅是当前在屏幕上可见的单元格的总数?正如David在评论中所说的,你不应该在cellForRowAt中进行计算。表格视图可能会多次请求同一个单元格,请求单元格不按顺序等。如果您告诉我们您要做什么,我们可能会提供关于如何完成它的建议。 –
我将编辑问题以提供更多详细信息。 – icekomo