单元格内容在tableview高度之外的行中更改(要查看此单元格,我们向下滚动向下滚动)?

时间:2010-05-07 10:25:41

标签: iphone ipad uitableview uipopovercontroller

我将tableView的大小设置为popoverController为4 * rowheight。我在tableView中使用12个字符。每个单元格包含图像和标签。我可以通过滚动查看所有单元格。高达第五细胞就可以了。在第5个细胞之后,对于剩余的细胞,重复我在前四个细胞中使用的标记和图像。如果我选择单元格,则会准确显示结果。

但是当我再次使用tableView时,即使对于前5个单元格,图像和标签也不准确。所有都已更改,但选择正在给出正确的结果。任何人都可以帮助我吗?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil)
{
    cell = [self tableviewCellWithReuseIdentifier:CellIdentifier rowNumber:indexPath.row];
}
//tableView.backgroundColor = [UIColor clearColor];
return cell;
}


- (UITableViewCell *)tableviewCellWithReuseIdentifier:(NSString *)identifier rowNumber:(NSInteger)row
{   

 CGRect rect;
rect = CGRectMake(0.0, 0.0, 360.0, ROW_HEIGHT);
UITableViewCell *cell = [[[UITableViewCell alloc] initWithFrame:rect reuseIdentifier:identifier] autorelease];

UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(10.00, 10.00, 150.00, 100.00)];
myImageView.tag = IMAGE_TAG;
[cell.contentView addSubview:myImageView];
[myImageView release];

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(170.00, -10.00, 170.00, 80.00)];
label.tag = LABEL_TAG;
[label setBackgroundColor:[UIColor clearColor]];
[label setTextColor:[UIColor blackColor]];
[label setFont:[UIFont fontWithName:@"AmericanTypewriter" size:22]];
[label setTextAlignment:UITextAlignmentLeft];
[cell.contentView addSubview:label];
[label release];

if (row == 0)
{
    UIImageView *imageView = (UIImageView *)[cell viewWithTag:IMAGE_TAG];
    imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"cover_v.jpg"]];
    UILabel *mylabel = (UILabel *)[cell viewWithTag:LABEL_TAG];
    mylabel.text = [NSString stringWithFormat:@"COVER PAGE"];
}
   }

2 个答案:

答案 0 :(得分:1)

啊,狼獾你犯的是一个愚蠢的错误:

基本上,您可以设置

中标签的值
    if(cell==nil){
}

块。因此,重复这些值是因为它们被重用而不是为每个单元格设置。

您需要在indexpath的帮助下设置此块之外的值,并且更改将相应地反映。

希望这有帮助,

谢谢,

Madhup

答案 1 :(得分:0)

您应该为所有表提供imageView.image和label.text:

UIImageView *imageView = (UIImageView *)[cell viewWithTag:IMAGE_TAG];
UILabel *mylabel = (UILabel *)[cell viewWithTag:LABEL_TAG];

if (row == 0)
{
    imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"cover_v.jpg"]];
    mylabel.text = [NSString stringWithFormat:@"COVER PAGE"];
}
else
{
    imageView.image = // ???
    mylabel.text = // ??
}

当然,该代码应该是“if(cell == nil){...}”框架。