2

例如,当您正在观看带有加号按钮的单元格的 tableView 时,当我按下该按钮时,它会隐藏当前按钮,但是当我滚动 tableview 时,其他 customCells 上的其他一些按钮也会被隐藏,但我没有隐藏它们。请帮帮我。如何适应这个问题。

在此处输入图像描述

4

3 回答 3

2

UITableView 正在缓存单元格,这意味着它不会始终存储所有单元格,这在内存方面非常出色。它的问题是,当单元被重用时,它没有引用存储在该单元中的值。通常所做的是,存储在动态单元格中的所有值都存储在单独的 NSMutableArrays 中。

对于您的问题,您可以添加一个带有布尔值的数组,指示它们是否隐藏,并在tableView:cellForRowAtIndexPath:委托方法中使用

cell.hidden = [[self.yourArray objectAtIndex:indexPath.row] boolValue];

在按钮回调方法中,您应该更改 hidden 属性以及更新数组中的值。

于 2012-10-31T15:00:14.827 回答
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];
}
于 2012-10-31T15:06:08.310 回答
0

tableView:cellForRowAtIndexPath:委托方法中,您需要遍历所有可见单元格:

for (UITableViewCell *cell in [self.tableView visibleCells]) {
    // now you have a cell that you can update
}

您还必须记住更新您的数据源,以便滚动表格将相应地更新单元格而不显示加号按钮。例如,如果您要更新数据源,您可以重新加载上述 for 循环中的单元格。

于 2012-10-31T14:52:09.797 回答