滚动后图像更改的UITableView

时间:2012-08-01 12:12:36

标签: ios uitableview uiimageview

我正在尝试使用不同的单元格标识符创建自定义UITableView。在第一个单元格中应显示图像,在下方跟随其余单元格。然而,在滚动后,显示的图像消失。我试图通过寻找其他人为类似问题提供的答案来解决,但没有成功。

这是代码。

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    EventoCell *cell;
    static NSMutableString *CellIdentifier;
    if(i==0){
        CellIdentifier = @"imgCell";
        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

        i++;
    }
    else{
       CellIdentifier = @"CellaEvento";
       cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

       cell.Nome.text=[[AShow objectAtIndex:indexPath.row]GetEvento];
       cell.Localita.text=[[AShow objectAtIndex:indexPath.row]GetLocalita];
       cell.Ora.text=[NSString stringWithFormat:@"%d:%d",[[AShow objectAtIndex:indexPath.row]GetOra],[[AShow objectAtIndex:indexPath.row]GetMinuti]];

       [cell setValue:[[AShow objectAtIndex:indexPath.row]GetEvento] :[[AShow objectAtIndex:indexPath.row]GetGiorno] :[[AShow objectAtIndex:indexPath.row]GetMese] :[[AShow objectAtIndex:indexPath.row]GetAnno] :[[AShow objectAtIndex:indexPath.row]GetOra] :[[AShow objectAtIndex:indexPath.row]GetMinuti]];

    }
    return cell;
}

2 个答案:

答案 0 :(得分:0)

您想在第一行显示图像吗?如果是这样,我认为你可以改变判断线是否是

的第一行
if ( i==0 )

if (indexPath.row == 0 && indexPath.section == 0)

我认为我必须是班级成员。 UITableView仅创建有限数量的UITableViewCell。通常,数字等于显示行的数量。例如,如果屏幕只能显示10行,UITableView会创建10个单元格。滚动后,它通过调用dequeueReusableCellWithIdentifier:forIndexPath重新使用创建的单元格,这使得屏幕外的行释放其单元格。向后滚动时,每个“新”输入的项目都需要一个单元格。 UITableView会为新单元格调用tableView:cellForRowAtIndexPath。因此,作为您的场景,只有第一次,才能显示图像行,因为在第一次之后,即使向后滚动,i也非零。

答案 1 :(得分:0)

我相信“i”在您的代码中被用作实例变量。相反,您应该依赖于作为- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法

的参数传递的indexPath变量

表格视图中的第一个项目由以下标识:

 indexPath.row == 0 and indexPath.section == 0

.row是给定部分中的行索引.section

确保您已正确实施这两个委托方法,以便分别正确识别某个部分中的行数和部分数量:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView