2013-08-23 222 views
0

我創建了一個帶有兩個集合視圖的tabbar應用程序。我成功地有2個標籤欄使用集合視圖,但他們都從相同的圖像文件夾接收數據 - 拇指&完整。所以,這兩個標籤上的圖像目前是相同的。收藏視圖 - 從不同文件夾接收圖像 - 如何?

我希望找出最好的辦法是從不同的文件夾中獲取不同的圖像,所以它們不一樣?

如果您需要更多信息,請告訴我。

NSString *kDetailedViewControllerID = @"DetailView"; 
NSString *kCellID = @"cellID";       




@implementation ViewController 

- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section; 
{ 
    return 29; 
} 

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath; 
{ 

    Cell *cell = [cv dequeueReusableCellWithReuseIdentifier:kCellID forIndexPath:indexPath]; 



    NSString *imageToLoad = [NSString stringWithFormat:@"%d.JPG", indexPath.row]; 
    cell.image.image = [UIImage imageNamed:imageToLoad]; 

    return cell; 
} 



- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([[segue identifier] isEqualToString:@"showDetail"]) 
    { 
     NSIndexPath *selectedIndexPath = [[self.collectionView indexPathsForSelectedItems] objectAtIndex:0]; 

     // load the image, to prevent it from being cached we use 'initWithContentsOfFile' 
     NSString *imageNameToLoad = [NSString stringWithFormat:@"%d_full", selectedIndexPath.row]; 
     NSString *pathToImage = [[NSBundle mainBundle] pathForResource:imageNameToLoad ofType:@"JPG"]; 
     UIImage *image = [[UIImage alloc] initWithContentsOfFile:pathToImage]; 

     DetailViewController *detailViewController = [segue destinationViewController]; 
     detailViewController.image = image; 
    } 
} 

@end 
+0

顯示您正在執行的操作以獲取圖像並將圖像保存到2個文件夾的代碼。爲什麼你不能只爲圖像設置適當的路徑? – Wain

+0

代碼被編輯到問題中,我不確定是否需要創建新類或者是否可以複製代碼並相應地更改字符串。 – aaip

回答

1

當使用imageWithName[[NSBundle mainBundle] pathForResource:imageNameToLoad ofType:@"JPG"],我們希望你來控制對不同尺寸的不是不同的文件夾,但不同的文件名的圖像。如果你想使用不同的文件夾,那麼你通常不會使用NSBundle來進行加載。

從您的評論,你甚至不一定需要使用不同的類或重複。考慮重用。如果你的控制器的邏輯是相同的,但是圖像大小/位置不同,那麼你可以向類中添加一些屬性來設置這些細節,然後可以實例化和配置一個類以在兩種情況下工作。

+0

爲了說明問題,我可以將stringWithFormat從@「%d_full」至@「%d_full2」,同時確保圖像名稱相應對應,同時仍將文件類型保持爲JPG。所以結果將不會從集合視圖中的文件夾中接收到,而是從名稱類型改爲在segue中匹配,以便名稱不會重複兩次? – aaip

+0

在你的問題告訴我的範圍內,是的,這聽起來是正確的。 – Wain