Obj-C:Tableviewcell中的UIImageview不断出现

时间:2011-02-04 14:32:25

标签: iphone objective-c uitableview uiimageview

我正在开发一个iphone项目,该项目在顶部tableview部分(第0部分)显示一件艺术品,并在(第1部分)中显示了一个项目列表。 tableview看起来像这样:

第0节:

艺术作品图片

SECTION1:

cell1:text1

cell2:text2

。   。   。那样的goe。

但奇怪的是,当我向下滚动时,程序在页面底部显示另一个图像视图,但它不应该显示该图像,因为它不是第0部分。

继承我程序的代码:

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


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
switch (section) {
    case 0:
        return 1;
        break;
    case 1:
        return [diskArray count];
        break;
    default:
        return 0;
        break;
}
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

switch (indexPath.section) {
    case 0:
        return 225;
        break;
    default:
        return 44;
        break;
}

}
// Customize the appearance of table view cells.
- (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];
}
// Configure the cell...
if(indexPath.section == 0)
{
    if(indexPath.row == 0)
    {
    NSLog(@"adding image to the cell");
    UIImage *img = [UIImage imageNamed:@"artwork.jpeg"];
    UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(47, 0, 225, 225)];
    imgView.image = img;
    [cell addSubview:imgView];
    [imgView release];
    cell.backgroundColor = [UIColor clearColor];
    cell.textLabel.text = nil;
    }
}
else if(indexPath.section == 1){
    cell.textLabel.text = [diskArray objectAtIndex:indexPath.row];
    cell.backgroundColor = [UIColor darkGrayColor];
    cell.textLabel.textColor = [UIColor whiteColor];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}

return cell;
}

2 个答案:

答案 0 :(得分:1)

iPhone会使用您添加的子视图重新使用旧单元格。尝试更改每个部分的CellIdentifier。

答案 1 :(得分:0)

这是因为您重复使用了单元格,但无处重新进行了重新初始化。 试试这个删除图像:

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
} else {
    [cell subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
    //you should also reinit the other values, as textLabel, bgColor et al.
}