2

我有UITableView多个部分,每个部分都有多个带有离散UIStepper控件的单元格。在点击并按住每个单元格时,根据需要使用当前值更新UIStepper同伴。UILabelUIStepper

这工作正常:按住UIStepper它会增加总数,同时更新UILabel

我想要的是每个部分的标题将该部分中所有单元格的当前总数相加,并将该数字添加到标题文本中,为用户提供所有部分单元格UIStepper值的快速总和。

=====================
 部分总数:12
=====================
 单元格:3 | - | + |
--------------------
 单元格:5 | - | + |
--------------------
 单元格:4 | - | + |
=====================
 部分总数:9
=====================
 单元格:1 | - | + |
--------------------
 单元格:2 | - | + |
--------------------
 单元格:6 | - | + |

使用[self.tableView reloadData] ;电话也可以。

但是,它只记录在UIStepper;上进行的每个离散触摸。该reloadData呼叫似乎停止了正在注册的连续触摸。这意味着要使标题中的总数与该部分单元格中不断增加的值保持同步,需要用户一次点击一次,而不是按住。

有没有办法在整个“循环”中重新加载单个部分的标题文本,以便在用户将手指放在控件上时跟踪增加的值?

4

1 回答 1

0

我会保留对您拥有的所有节标题的引用,并在您的增量代码调用方法中直接在标题视图上,而不是依赖表更新来处理它。创建节标题有两个主要选项:

  1. 将它们全部初始化并将它们viewDidLoad保存在一个集合中。然后tableView:viewForHeaderInSection:从集合中返回该部分的适当实例。如果您提前知道将有多少个部分,则此选项是最佳选择。

  2. 懒惰地初始化它们tableView:viewForHeaderInSection:并按节号将它们存储在集合中。如果您有很多标题,并且如果用户没有滚动,您不想将它们保留在内存中,那么这是您最好的选择。

当您需要更新标头时,将其从集合中拉出并在其上调用一些递增方法;如果它是可见的,它将立即更新,如果不是,它会在滚动到视图中时以正确的值显示。理想情况下,这些递增的值会保存到某个模型对象中!

于 2013-04-29T20:24:51.470 回答