故障排除:以编程方式将附件视图添加到UITableViewCell搞砸了

时间:2013-06-03 15:42:46

标签: ios uitableview

我已经坚持了几天这个问题了,我已经多次调试了,无法弄清楚出了什么问题。 我有一个UITableView有三个部分。我想将按钮作为accessoryView和UILabel添加为detailText到第二部分。 View首次加载时看起来不错。 enter image description here

但滚动后,它变为enter image description here

几次滚动后,它会冻结(不会崩溃)。 以下是我的代码,任何建议将不胜感激。

#pragma mark - Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    // Return the number of sections.
    return 3;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section==0) {
        return self.status.count;
    }
    else if (section==1)
        return self.overrideCtrl.count;
    else
        return self.levelStatus.count;
    // Return the number of rows in the section.
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MenuCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    NSLog(@"section %@",indexPath);
    if (indexPath.section == 0) {
        cell.textLabel.text = [self.status objectAtIndex:indexPath.row];
        NSLog(@"Status %@",cell.textLabel.text);
    }
    else if (indexPath.section == 1) {
        cell.textLabel.text = [self.overrideCtrl objectAtIndex:indexPath.row];
        cell.detailTextLabel.text =[NSString stringWithFormat:@"00:%02d",[[self.timeLeftArray objectAtIndex:indexPath.row] intValue]];//[[self.timeLeftArray objectAtIndex:indexPath.row] stringValue];
        cell.accessoryView=[self.checkButtonArray objectAtIndex:indexPath.row];
        NSLog(@"override %@",cell.textLabel.text);

    }else{
        cell.textLabel.text = [self.levelStatus objectAtIndex:indexPath.row];
        NSLog(@"level %@",cell.textLabel.text);

    }
    return cell;
}

谢谢!

2 个答案:

答案 0 :(得分:0)

这个问题在SO上有很多,这是因为细胞重用。您需要为其他部分将accessoryView设置为UITableViewCellAccessoryNone,否则,用于第一部分的单元格可能会在另一部分中使用,并且仍然具有其附件视图。

答案 1 :(得分:0)

您只有1 CellIdentifier。每个部分都应该有不同的部分。