我有一个Xcode Swift应用程序,它使用UITableView显示结果列表。
每一行都有一个值,该值被计算为下一行中值的差值。
加载数据时,一切都很好。但是我注意到,正如我现在已经了解到TableView的行为,是每个单元格在即将呈现时都会被计算出来。
所以我最初在我的代码逻辑中说过,
// Global variable
var previousX = 0;
// Building up cell (this happens for each cell in the table view)
----------------------------
var x = 5;
var difference = x - previousX;
previousX = x;
----------------------------
因此,当首次加载列表时,这可以正常工作,然后向下滚动。 但是,只要向上滚动,它就会再次加载单元格。这意味着我的'previousX'并不是我正在构建的当前单元格上方的单元格,但可能低于。所以价值观有点不可预测。
我该如何避免这种情况?在构建单元格时,我的单元格如何始终获得“上一个/上面”单元格值?显然,使用'previousX'作为最后一个填充单元格的值并不是理想的解决方案。
如果您需要我的更多信息,请与我们联系。
谢谢!
答案 0 :(得分:1)
使用indexPath.row值作为每行的唯一数据,并根据单元格位置自动增加/减少。这可能有所帮助。
答案 1 :(得分:1)
要达到这个你必须为此保持数组:
// instance variable
var previousX:[Int] = []
// Give default to array
previousX = [Int](count: 3, repeatedValue: 0) // create array as per you need
// Building up cell (this happens for each cell in the table view)
var x = 5
var difference = x - previousX[indexPath.row - 1]
previousX[indexPath.row] = difference