问题描述
I am trying to achieve this.At the moment I have this.
到目前为止,我已经可以将图像放置在customTableViewCell中.但是,它总是在每行上放置相同的图像.我想要的是下一行拍摄下一张图像.
So I got it so far to place images in my customTableViewCell. But it always places the same images on each row. What I want is on the following row takes the next image.
我有一个计数器,即"indexOfIndexPath".这就是我在CellForRowAtIndexPath中所做的.
I have a counter namely 'indexOfIndexPath'. And this is what I do in my CellForRowAtIndexPath.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"PlayerCustomCell";
PlayerCustomCell *cell = (PlayerCustomCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PlayerCustomCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
if(indexPath.row == 0){
NSIndexPath *path = [NSIndexPath indexPathForRow:indexPath.row+_indexOfIndexPath inSection:0];
NSLog(@"%@",path);
Team *team = [self.fetchedResultsController objectAtIndexPath:path];
if(!img1){
img1 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:team.image]];
UIImage* image = [[UIImage alloc] initWithData:img1];
[cell setImage:image forPosition:1];
_indexOfIndexPath++;
}
NSIndexPath *path1 = [NSIndexPath indexPathForRow:indexPath.row+_indexOfIndexPath inSection:0];
NSLog(@"%@",path1);
Team *team1 = [self.fetchedResultsController objectAtIndexPath:path1];
if(!img2){
img2 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:team1.image]];
UIImage* image = [[UIImage alloc] initWithData:img2];
[cell setImage:image forPosition:2];
_indexOfIndexPath++;
}
NSIndexPath *path2 = [NSIndexPath indexPathForRow:indexPath.row+_indexOfIndexPath inSection:0];
NSLog(@"%@",path2);
Team *team2 = [self.fetchedResultsController objectAtIndexPath:path2];
if(!img3){
img3 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:team2.image]];
UIImage* image = [[UIImage alloc] initWithData:img3];
[cell setImage:image forPosition:3];
_indexOfIndexPath++;
}
NSIndexPath *path3 = [NSIndexPath indexPathForRow:indexPath.row+_indexOfIndexPath inSection:0];
Team *team3 = [self.fetchedResultsController objectAtIndexPath:path3];
if(!img4){
img4 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:team3.image]];
UIImage* image = [[UIImage alloc] initWithData:img4];
[cell setImage:image forPosition:4];
_indexOfIndexPath++;
}else{
img4 = [[NSData alloc] initWithContentsOfFile:@"keeperNil.jpg"];
UIImage* image = [[UIImage alloc] initWithData:img4];
[cell setImage:image forPosition:4];
}
NSIndexPath *path4 = [NSIndexPath indexPathForRow:indexPath.row+_indexOfIndexPath inSection:0];
Team *team4 = [self.fetchedResultsController objectAtIndexPath:path4];
if(!img5){
img5 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:team4.image]];
UIImage* image = [[UIImage alloc] initWithData:img5];
[cell setImage:image forPosition:5];
_indexOfIndexPath++;
}
NSIndexPath *path5 = [NSIndexPath indexPathForRow:indexPath.row+_indexOfIndexPath inSection:0];
Team *team5 = [self.fetchedResultsController objectAtIndexPath:path5];
if(!img6){
img6 = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:team5.image]];
UIImage* image = [[UIImage alloc] initWithData:img6];
[cell setImage:image forPosition:6];
_indexOfIndexPath++;
}
}else{
if(img1){
UIImage* image = [[UIImage alloc] initWithData:img1];
if(image == nil){
image = [image initWithContentsOfFile:@"keeperNil.jpg"];
}else{
[cell setImage:image forPosition:1];
}
}
if(img2){
UIImage* image = [[UIImage alloc] initWithData:img2];
if(image == nil){
image = [image initWithContentsOfFile:@"keeperNil.jpg"];
}else{
[cell setImage:image forPosition:2];
}
}
if(img3){
UIImage* image = [[UIImage alloc] initWithData:img3];
if(image == nil){
image = [image initWithContentsOfFile:@"keeperNil.jpg"];
}else{
[cell setImage:image forPosition:3];
}
}
if(img4){
UIImage* image = [[UIImage alloc] initWithData:img4];
if(image == nil){
image = [image initWithContentsOfFile:@"keeperNil.jpg"];
}else{
[cell setImage:image forPosition:4];
}
}
if(img5){
UIImage* image = [[UIImage alloc] initWithData:img5];
if(image == nil){
image = [image initWithContentsOfFile:@"keeperNil.jpg"];
}else{
[cell setImage:image forPosition:5];
}
}
if(img6){
UIImage* image = [[UIImage alloc] initWithData:img6];
if(image == nil){
image = [image initWithContentsOfFile:@"keeperNil.jpg"];
}else{
[cell setImage:image forPosition:6];
}
}
}
return cell;
有人知道如何解决此问题吗?
Anybody has an idea how to fix this?
提前谢谢吗?
推荐答案
如果我正确理解,那就想
If I understand it correctly, you want
- 表第0行中的图像0、1、2、3、4、5,
- 表格第1行中的图像6、7、8、9、10、11
- ...等等.
这应该与以下代码一起使用:
That should work with the following code:
#define IMAGES_PER_ROW 6
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *simpleTableIdentifier = @"PlayerCustomCell";
PlayerCustomCell *cell = (PlayerCustomCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];
if (cell == nil)
{
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"PlayerCustomCell" owner:self options:nil];
cell = [nib objectAtIndex:0];
}
NSInteger frcRow = indexPath.row * IMAGES_PER_ROW; // row in fetched results controller
for (int col = 1; col <= IMAGES_PER_ROW; col++) {
NSIndexPath *path = [NSIndexPath indexPathForRow:frcRow inSection:0];
Team *team = [self.fetchedResultsController objectAtIndexPath:path];
NSData *imgData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:team.image]];
UIImage *image;
if (imgData == nil) {
// default image
image = [UIImage imageWithContentsOfFile:@"keeperNil.jpg"];
} else {
image = [UIImage imageWithData:imgData];
}
[cell setImage:image forPosition:col];
frcRow ++;
}
return cell;
}
请注意,表视图的行数与获取的结果控制器中的行数不同,必须在 numberOfRowsInSection
中考虑:
Note that the number of table view rows is not the same as the number of rows in the fetched results controller, this must be considered in numberOfRowsInSection
:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[fetchedResultsController sections] objectAtIndex:section];
NSInteger count = [sectionInfo numberOfObjects];
return (count + IMAGES_PER_ROW - 1)/IMAGES_PER_ROW;
}
这篇关于用图像填充自定义tableviewCell的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!