滚动时UITableView单元格标签移动

时间:2012-04-14 20:36:22

标签: objective-c uitableview uilabel cell

我创建了一个uitableview,当我启动它时,它看起来应该如此,但是当我滚动时,它会将文本放在我未指定的所有其他部分中,有人可以帮忙。 附加的第一张图片是它应该如何看。第二个是滚动时它的作用。

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (section == 0 ){
        return 1;}
    else if (section == 1){
        return [cellLabels count];
    }else if (section == 2){
        return 1;
    }else{
        return 0;
    }

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *cellIdentifier = @"cellIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];
    }
    tableView.showsVerticalScrollIndicator = NO;
    // cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    tableView.separatorStyle = UITableViewCellSeparatorStyleNone;


    if( indexPath.section == 0 )
    {
    }
    else if (indexPath.section == 1)
    {
        cell.textLabel.backgroundColor = [UIColor clearColor];
        cell.textLabel.textColor = [UIColor blackColor];
        // headerLabel.font = [UIFont SystemFontOfSize:16];
        [cell.textLabel setFont:[UIFont fontWithName:@"Arial" size:14]];
        cell.textLabel.text = [cellLabels objectAtIndex:indexPath.row];


    }
return cell;

}

This is what is looks like when it is launched, and what it is supposed to look like

enter image description here

1 个答案:

答案 0 :(得分:1)

你的问题非常简单,

因为表视图重用了已分配的单元格, 当第一次第一次显示您的显示时,第二部分显示您的自定义文本

当它向下滚动并返回时,文本将出现在第一部分,因为它到达

if( indexPath.section == 0 )
{
}

它不会做任何事情

制作

if( indexPath.section == 0 )
{
   cell.textLabel.text = @"";
}
else if( indexPath.section == 2 )
{
   cell.textLabel.text = @"";
}

if( indexPath.section == 0 )
{
   cell.textLabel.text = nil;
}

else if( indexPath.section == 2 )
{
   cell.textLabel.text = nil;
}

其他FOR SECTION 1是正确的