我正在尝试使用不同的单元格标识符创建自定义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;
}
答案 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.row == 0 and indexPath.section == 0
.row是给定部分中的行索引.section
确保您已正确实施这两个委托方法,以便分别正确识别某个部分中的行数和部分数量:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView