0

我需要UITableView像 GridView 一样显示一些图像(动态计数)。我想显示3 images in each section

如果大于 3,则应遵循下一节。所有图像都在NSMutableArray(arr)每个图像中的一个索引处。

现在假设如果有 2 个图像,那么它们应该进入第一部分。如果有 >3(第二部分)。数组中的图像数量是动态的。

如果每个部分完成了 3 张图像,那么它应该进入下一个。但是我不知道如何添加到部分中,如果 3 张图像被填充,则转到下一部分。

这是代码:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
       static NSString *hlCellID=@"hlCellID";

        UITableViewCell* hlcell=[self.tableView dequeueReusableCellWithIdentifier:hlCellID];

        if(hlcell == nil)
        {
            hlcell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault    reuseIdentifier:hlCellID]autorelease];

            hlcell.accessoryType = UITableViewCellAccessoryNone;
            hlcell.selectionStyle = UITableViewCellSelectionStyleNone;
        }

        int n=[array count];//dynamic item count (suppose 2)


        int i=0,i1=0;
        while(i<n)
        {
            int yy= 4+i1*34;
            int j=0;
            for(j=0;j<3;j++)
            {
                if(i>=n)break;
                CGRect rect=CGRectMake(0+150*j,yy,150,40);
                NSMutableDictionary *d =[[[NSMutableDictionary alloc]initWithDictionary: [productsarray objectAtIndex:indexPath.row]]autorelease];
                NSString* yourBase64String = [d objectForKey: @"image"];
                UIImageView *myImageView = [[UIImageView alloc] initWithFrame:rect];
                [myImageView setFrame:rect];
                [myImageView setContentMode:UIViewContentModeLeft];

                NSData *data = [NSData dataFromBase64String:yourBase64String];
                UIImage* image = [UIImage imageWithData: data];

               NSString *tagValue=[NSString stringWithFormat:@"%d%d",indexPath.section+1,i];
                myImageView.tag = [tagValue intValue];
                myImageView.image = image;
                [hlcell.contentView addSubview:myImageView];
                [myImageView release];

                i++;




            }
            i1=i1+1;
        }

        return hlcell;

}

但是这里有 2 张图片在一个部分中添加了第一个,在另一个部分中添加了另一个(一个在另一个之下)。

任何帮助或想法将不胜感激。

4

1 回答 1

2

我有另一个想法,据我说它比你实现的要简单。

你有一系列图像。所以你可以做的是创建一个包含 NSDictionary 的新 NSArray,如下所示:

(
    {
         headerTitle:@"first";
         imageDict:{
                       img1:@"abc.png";
                       img2:@"abc.png";
                       img3:@"abc.png";
                   }
    },
    {
         headerTitle:@"second";
         imageDict:{
                       img1:@"abc.png";
                       img2:@"abc.png";
                       img3:@"abc.png";
                   }
    }
)

为 Array 创建这种类型的结构。

然后实现表视图委托和数据源方法,例如:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return [array count];
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    NSDictionary *dictionary = [array objectAtIndex:section];
    UIView *headerView = [[[UIView alloc]init] autorelease];

    // Write code for header section

    return headerView;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
      // display images if the available.
      // means if only 2 images are their then add only two and like-wise
}

我想这会对你有所帮助。谢谢。

于 2013-05-04T10:04:00.233 回答