带有行和列的分段UITtableView

时间:2013-05-04 06:01:05

标签: iphone objective-c uitableview nsmutablearray

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

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

现在假设有两个图像,那么它们应该进入第一部分。如果有> 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;

}

但是这里有两张图片加在第一节和第一节中。其他部分(一个在另一个之下)。

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

1 个答案:

答案 0 :(得分: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
}

我认为这会对你有所帮助。 感谢。