2012-10-10 25 views
0

我想用5個不同的圖像視圖填充我的自定義tableview單元格。 在我的customTableViewCell中,我這樣做。如何使用uiTableviewCell中的下一個indexPath

-(void)setImage:(UIImage *)image forPosition:(NSUInteger)position{ 
    if(position == 1){ 
     _img_Player1.image = image; 
    }else if(position == 2){ 
     _img_Player2.image = image; 
    }else if(position == 3){ 
     _img_Player3.image = image; 
    }else if(position == 4){ 
     _img_Player4.image = image; 
    }else if(position == 5){ 
     _img_Player5.image = image; 
    }else if(position == 6){ 
     _img_Player6.image = image; 
    } 

} 

而在我的CellForRowAtIndexPath我這樣做。

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]; 
    } 
    Team *team = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
    NSData* imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:team.image]]; 
    UIImage* image = [[UIImage alloc] initWithData:imageData]; 
    for(int i=0;i<=5;i++) 
    { 
     [cell setImage:image forPosition:i]; 

    } 


    return cell; 

此刻我的tableview看起來像這樣。

|---------------------------------------------------------------------| 
|                  | 
| bird image bird image bird image  bird image bird image | 
|---------------------------------------------------------------------| 
|                  | 
| dog image dog image dog image dog image dog image  | 
|---------------------------------------------------------------------| 
|                  | 
| cat image  cat image cat image cat image  cat image | 
|---------------------------------------------------------------------| 

我希望你看看問題是什麼。我認爲,它設置圖像後,它應該去下一個indexPath。我的問題是現在我該怎麼做?

親切的問候。

+0

一個問題是,您正在調用'setImage:forPosition:'值爲0到5,但它試圖處理1對6。除此之外,你希望你的桌子看起來如何? –

+0

這裏是我想要實現的截圖http://www.flickr.com/photos/[email protected]/8050170687/ – Steaphann

+0

從這個角度來看,Team'似乎需要一個由5個URL字符串組成的數組,一個爲每個位置。然後,在你的循環中,你會爲每個索引創建一個不同的圖像。 –

回答

1

首先加5周的NSData這樣在.h文件中

NSData *birdImgData; 
    NSData *dogImgData; 
    NSData *catImgData; 
    NSData *aImgData; 
    NSData *bImgData; 

在的cellForRowAtIndexPath做到這一點:

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){ 

Team *team = [self.fetchedResultsController objectAtIndexPath:indexPath]; 
if(!birdImgData){ 
    birdImgData = [[NSData alloc] initWithContentsOfURL:[NSURL 
URLWithString:team.image]]; 
    UIImage* image = [[UIImage alloc] initWithData:birdImgData]; 
    [cell setImage:image forPosition:1]; 
} 

NSIndexPath *path1 = [NSIndexPath indexPathForRow:indexPath.row+1 inSection:0]; 
Team *team1 = [self.fetchedResultsController objectAtIndexPath:path1]; 
if(!dogImgData){ 
    dogImgData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:team1.image]]; 
    UIImage* image = [[UIImage alloc] initWithData:dogImgData]; 
    [cell setImage:image forPosition:2]; 
} 

NSIndexPath *path2 = [NSIndexPath indexPathForRow:indexPath.row+2 inSection:0]; 
Team *team2 = [self.fetchedResultsController objectAtIndexPath:path2]; 
if(!catImgData){ 
    catImgData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:team2.image]]; 
    UIImage* image = [[UIImage alloc] initWithData:catImgData]; 
    [cell setImage:image forPosition:3]; 
} 

NSIndexPath *path3 = [NSIndexPath indexPathForRow:indexPath.row+3 inSection:0]; 
Team *team3 = [self.fetchedResultsController objectAtIndexPath:path3]; 
if(!aImgData){ 
    aImgData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:team3.image]]; 
    UIImage* image = [[UIImage alloc] initWithData:aimageData]; 
    [cell setImage:image forPosition:4]; 
} 

NSIndexPath *path4 = [NSIndexPath indexPathForRow:indexPath.row+4 inSection:0]; 
Team *team4 = [self.fetchedResultsController objectAtIndexPath:ipath4]; 
if(!bImgData){ 
    bImgData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:team4.image]]; 
    UIImage* image = [[UIImage alloc] initWithData:bimageData]; 
    [cell setImage:image forPosition:5]; 
} 
} 
else 
{ 
    if(birdImgData){ 
    UIImage* image = [[UIImage alloc] initWithData:birdImgData]; 
    [cell setImage:image forPosition:1]; 
    } 
    if(dogImgData){ 
    UIImage* image = [[UIImage alloc] initWithData:dogImgData]; 
    [cell setImage:image forPosition:2]; 
    } 
    if(catImgData){ 
    UIImage* image = [[UIImage alloc] initWithData:catImgData]; 
    [cell setImage:image forPosition:3]; 
    } 
    if(aImgData){ 
    UIImage* image = [[UIImage alloc] initWithData:aImgData]; 
    [cell setImage:image forPosition:4]; 
    } 
    if(bImgData){ 
    UIImage* image = [[UIImage alloc] initWithData:bimageData]; 
    [cell setImage:image forPosition:5]; 
    } 
} 

return cell; 
+0

它在objectAtIndexPath:indexPath + 1上給出錯誤。 – Steaphann

+0

錯誤是下面的「對指向接口'NSIndexPath'的指針的算術,它在非易碎的ABI中不是一個常量大小。 – Steaphann

+1

@StefGeelen這是因爲索引路徑或多或少是一個集合,有一個節組件和一個行組件。嘗試:'indexPath.row + 1' –

0

您的代碼

UIImage* image = [[UIImage alloc] initWithData:imageData]; 
for(int i=0;i<=5;i++) 
{ 
    [cell setImage:image forPosition:i]; 

} 

設置在每個ImageView的相同的圖像你的手機。這個代碼可以unwinded爲類似

UIImage* image = [[UIImage alloc] initWithData:imageData]; 
[cell setImage:image forPosition:0]; 
[cell setImage:image forPosition:1]; 
[cell setImage:image forPosition:2]; 
[cell setImage:image forPosition:3]; 
[cell setImage:image forPosition:4]; 
[cell setImage:image forPosition:5]; 

所以,你得到你所要求的正是爲:在小區內的每個位置相同的圖像。如果你想在每個單元格中使用不同的圖像,則需要爲六個不同的播放器圖像獲取六個不同的鏈接,然後您需要下載這些圖像並將每個圖像設置到單元格中的適當位置。

相關問題