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