例如,当您正在观看带有加按钮的单元格的tableView时,当我按下该按钮时,它会隐藏当前按钮,但是当我滚动tableview时,其他customCell上的其他按钮也会隐藏但我没有隐藏它们。请帮帮我。如何解决这个问题。
答案 0 :(得分:2)
UITableView正在缓存单元格,这意味着它不会一直存储所有单元格,这在内存方面非常出色。它的问题是,当重用单元时,它没有引用存储在该单元中的值。通常做的是,存储在动态单元中的所有值都存储在单独的NSMutableArrays中。
对于您的问题,您可以添加一个数组,其中包含指示它们是否隐藏的布尔值,并使用
在tableView:cellForRowAtIndexPath:
委托方法中读取该数组
cell.hidden = [[self.yourArray objectAtIndex:indexPath.row] boolValue];
在按钮回调方法中,您应该更改hiddenproperty以及更新数组中的值。
答案 1 :(得分:1)
我会按照以下方式进行:
首先你必须跟踪按钮的状态: 的显示的强> 要么 的隐藏强>
这是通过将状态保存在 NSMutableArray
中完成的在viewDidLoad
方法中添加以下内容
NSMutableArray *shownButtons = [[NSMutableArray alloc] init];
然后在tableView:cellForRowAtIndexPath
执行以下操作
NSString *tmpIndexPathString = [NSString stringWithFormat:@"%d",indexPath.row];
if ([shownButtons containsObject:tmpIndexPathString])
{
[cell.myButton setHidden:YES];
}
else
{
[cell.myButton setHidden:NO];
}
答案 2 :(得分:0)
在tableView:cellForRowAtIndexPath:
委托方法中,您需要循环遍历所有可见单元格:
for (UITableViewCell *cell in [self.tableView visibleCells]) {
// now you have a cell that you can update
}
您还必须记住更新数据源,因此滚动表格会相应地更新单元格而不显示加号按钮。如果您正在更新数据源,那么您可以在上面的for循环中重新加载单元格。