原文:http://blog.csdn.net/chaoyuan899/article/details/13291637
tableView表格中的cell有重用机制,这是一个很好的东西,可以避免开辟很多的空间内存。但是有时候我们不想让它重用cell,,可以用以下的代码解决。
将这个代码放在:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ }这个函数中执行就好了。
- //清楚cell的缓存
- NSArray *subviews = [[NSArray alloc] initWithArray:cell.contentView.subviews];
- for (UIView *subview in subviews) {
- [subview removeFromSuperview];
- }
例如:
- - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
- {
- static NSString *CellIdentifier = @"Cell";
- UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
- if (cell == nil) {
- cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
- reuseIdentifier: CellIdentifier];
- }else{
- //cell中本来就有一个subview,如果是重用cell,则把cell中自己添加的subview清除掉,避免出现重叠问题
- // [[cell.subviews objectAtIndex:1] removeFromSuperview];
- for (UIView *subView in cell.contentView.subviews)
- {
- [subView removeFromSuperview];
- }
- }
- if (tableView == couponTableView) {
- //进入优惠券列表
- cell.textLabel.text = [NSString stringWithFormat:@"%@", [couponArry objectAtIndex:indexPath.row]];
- }
- else{
- //进入团购列表
- cell.textLabel.text = [NSString stringWithFormat:@"%@", [groupbuyArry objectAtIndex:indexPath.row]];
- }
- return cell;
- }