【问题标题】:Reloading table view in xcode在 xcode 中重新加载表格视图
【发布时间】:2011-06-15 02:45:57
【问题描述】:

我的应用程序中有一个带有按钮和表格视图的文本框。在此表格视图中,我正在创建将显示一些图像的图像视图。现在,当我在文本框中输入数字时说 5,然后单击按钮,然后在表格视图中显示 5 个图像,其中 4 个图像在第一行。现在问题来了,如果我输入小于 5 的数字,比如 3,那么我必须在表格视图中只获得 3 个图像,但我仍然是获得 5 张图片,如果我输入超过 5 张,那么我会在表格视图中获得所需的数字。我的代码是:-

if([imageArray count] >0)
{
    [imageArray removeAllObjects];
}

int j = [text.text intValue];

for(int i=0;i<j;i++)
{
   [imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%d.png", i]]];
}

[tableView reloadData];     

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return 5;
   }
   // 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] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}


if(indexPath.row == 0)
{
    UIImageView *imageView1 = [[UIImageView alloc] initWithFrame:CGRectMake(0,5,100,125)];

    if([imageArray count]>0)
    {

        imageView1.image=[UIImage imageNamed:@"CARRY.png"];
        imageView1.image = [imageArray objectAtIndex:0];
        [cell.contentView addSubview:imageView1];
        [imageView1 release];
    }
    if([imageArray count]>1)
    {

        UIImageView *imageView2 = [[UIImageView alloc] initWithFrame:CGRectMake(150,5,100,125)];
        imageView2.image = [imageArray objectAtIndex:1];
        [imageView2 addSubview:button6];
        [cell.contentView addSubview:imageView2];
        [imageView2 release];
    }
    if([imageArray count]>2)
    {
        UIImageView *imageView3 = [[UIImageView alloc] initWithFrame:CGRectMake(310, 5, 100, 125)];
        imageView3.image = [imageArray objectAtIndex:2];
        [cell.contentView addSubview:imageView3];
        [imageView3 release];
    }
    if([imageArray count]>3)
    {
        UIImageView *imageView4 = [[UIImageView alloc] initWithFrame:CGRectMake(460,5,100,125)];
        imageView4.image = [imageArray objectAtIndex:3];
        [cell.contentView addSubview:imageView4];
        [imageView4 release];
    }

}
else if(indexPath.row == 1)
{
    if([imageArray count]>4)
    {
        UIImageView *imageView5 = [[UIImageView alloc] initWithFrame:CGRectMake(0,5,100,125)];
        imageView5.image = [imageArray objectAtIndex:4];
        [cell.contentView addSubview:imageView5];
        [imageView5 release];
    }
    if([imageArray count]>5)
    {                           
        UIImageView *imageView6 = [[UIImageView alloc] initWithFrame:CGRectMake(150,5,100,125)];
        imageView6.image = [imageArray objectAtIndex:5];
        [cell.contentView addSubview:imageView6];
        [imageView6 release];
    }

    if([imageArray count]>6)
    {
        UIImageView *imageView7= [[UIImageView alloc] initWithFrame:CGRectMake(310, 5, 100, 125)];
        imageView7.image = [imageArray objectAtIndex:6];
        [cell.contentView addSubview:imageView7];
        [imageView7 release];
    }
    if([imageArray count]>7)
    {                           
        UIImageView *imageView8 = [[UIImageView alloc] initWithFrame:CGRectMake(460,5,100,125)];
        imageView8.image = [imageArray objectAtIndex:7];
        [cell.contentView addSubview:imageView8];
        [imageView8 release];
    }
}

else if(indexPath.row == 2)
{
    if([imageArray count]>8)
    {
        UIImageView *imageView8 = [[UIImageView alloc] initWithFrame:CGRectMake(0,5,100,125)];
        imageView8.image = [imageArray objectAtIndex:8];
        [cell.contentView addSubview:imageView8];
        [imageView8 release];
    }
    if([imageArray count]>9)
    {                           
        UIImageView *imageView8 = [[UIImageView alloc] initWithFrame:CGRectMake(150,5,100,125)];
        imageView8.image = [imageArray objectAtIndex:9];
        [cell.contentView addSubview:imageView8];
        [imageView8 release];
    }                           

}




return cell;

}

我正在清除数组并再次向其中添加图像然后重新加载表格视图,但为什么输出不符合需要。请帮助。

谢谢, 克里斯蒂

【问题讨论】:

  • 你能告诉我们tableViewDatasource方法numberOfRowsInSection和tableView的方法cellForRowAtIndexPath吗?
  • 查看我编辑的问题,请帮忙

标签: objective-c xcode cocoa-touch ipad uitableview


【解决方案1】:

问题是您正在添加图像视图,但您没有删除之前添加的图像视图,以防单元格重复使用。

【讨论】:

  • 现在我在表格视图中添加了按钮并向其中添加了图像。但我得到的答案也相同
  • 这有什么不同?您正在添加但未删除它们的按钮或图像视图。
  • BTW 你看过AQGridView吗?它似乎解决了您要解决的问题。
  • @deepak,,请给出我需要做的代码部分,这里我也从数组中删除内容然后我必须做的,sry我是一个新鲜人跨度>
  • 关闭sample。希望它可以帮助您解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 2012-07-02
  • 2023-03-13
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
相关资源
最近更新 更多