当我们的uitableview为透明或者判断cell是否为空时,会发现uitableveiwcell会出现重叠,下面为自己的解决办法,提供给各位参考 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell=nil; static NSString *reuse=@"cell"; if (cell==nil) { cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:reuse] autorelease]; }else{ while ([cell.contentView.subviews lastObject] != nil) { [(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview]; //删除并进行重新分配 } } cell.textLabel.text=@"cell"; return cell; }
转:http://blog.sina.com.cn/s/blog_75b6e3a601015u4s.html
更好的写法:
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdetify = @"cell"; UITableViewCell *tvCell = [tableView dequeueReusableCellWithIdentifier:cellIdetify]; if(tvCell == nil) { NSLog(@"cell = nil"); tvCell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdetify] autorelease]; }else{ NSLog(@"cell !=nil "); NSArray *views = [tvCell subviews]; for (UIView *obj in views) { if (obj.tag==1000 || obj.tag==2000) { //只删除指定的画面,不要全部删除,否则tableview的分割线也会被删除 NSLog(@"cell 要删除的子画面是:%@",[obj class]); [obj removeFromSuperview]; } }