滚动uitableview时图像恢复原始状态

时间:2012-01-16 22:11:05

标签: iphone ios uitableview

我在每个单元格内都有一个按钮。按下时,图像被更改(基本上是一个复选框)以表示选择。当您滚动到底部...然后向上滚动到顶部。图像将还原为原始图像。

这个问题非常相似:

Preserve Cell Image After Scrolling UITableView

等等。但是,我似乎无法找到一个好的答案。据我所知,它正在恢复到当单元格离开屏幕时如何设置uitableview。但是,如何将更改的图像保存到uitableview,以便在滚动时不会恢复原始图像?

提前致谢! =)

2 个答案:

答案 0 :(得分:4)

它正在改变,因为细胞被重复使用。当您的单元格离开屏幕时,它将从视图中取出并重新放回重用池中。然后,您将在cellForRowAtIndexPath中再次将其从队列中取出并将其重新设置为默认值。

您链接的问题正是您应该遵循的问题。您应该在视图控制器中存储单元格的状态,然后在cellForRowAtIndexPath中再次设置时,应该加载该状态并适当地设置单元格。

您的方法的一个简单方法是将NSArray设置为与表中的行数相同的大小,然后只为每个存储NSNumber包含选择状态的布尔值的行。当用户切换时,切换数组中的值,然后在cellForRowAtIndexPath中读取该值并进行相应的设置。

答案 1 :(得分:0)

我假设您的表格视图单元格中的复选框正在将状态更改为选定状态,因为用户选择了它。您不应使用UI元素来维护应用程序的状态。也就是说,当用户点击复选框时,您应该使用该事件以某种方式反映应用中数据对象中的状态更改。然后,当需要再次显示该单元格时,可以使用先前保存的状态对其进行配置。这允许像细胞重用,查看卸载这样的东西,并且是一个好习惯。