我需要在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;
}
但是这里有两张图片加在第一节和第一节中。其他部分(一个在另一个之下)。
任何帮助或想法都将不胜感激。
答案 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
}
我认为这会对你有所帮助。 感谢。