iphone - UITableView滚动问题

时间:2011-04-29 15:15:41

标签: iphone uitableview

我在我的应用程序中创建了一个包含5个部分的TableView。

第1 - 4节每分钟只包含一行,第5节包含5行。

一切正常,直到我从屏幕上滚动TableView。在我的第一部分和行(单元格)中,我将accessoryView设置为UILabel,其中包含一些文本。

每个其他单元格都将公开按钮作为accessoryType。

当我滚动tableView时,我在第一个单元格中的文本以某种方式显示在最后一个单元格中??

我已经通过将NSStrings添加到数组中来设置我的数据,然后将它们作为字典添加到NSMutableArray。

这是我的手机设置:

- (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] autorelease];
    }

   // UISwitch *aUISwitch = [[[UISwitch alloc]initWithFrame:CGRectZero]autorelease];

    // Configure the cell. 

    NSDictionary *dictionary = [listOfSettings objectAtIndex:indexPath.section];
    NSArray *array = [dictionary objectForKey:@"Settings"];
    NSString *cellValue = [array objectAtIndex:indexPath.row];
    cell.textLabel.text = cellValue;

    if([cellValue isEqualToString:@"Status"]){
        UILabel *viewLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 100, 20)];
        [viewLabel setText:@"Connected"];
        cell.accessoryView = viewLabel;
        [viewLabel release];

    }
    else{
    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
    }
    return cell;
}

我知道细胞在离开屏幕时会被删除/删除,所以我认为这与它有关吗?处理屏幕上重新出现的细胞的推荐做法是什么?

1 个答案:

答案 0 :(得分:1)

快速浏览一下......在else语句中,您不仅需要设置cell.accessoryType,还要设置cell.accessoryView = nil;

当细胞被回收时,accesoryView仍然存在。