集合视图 - 从不同的文件夹接收图像 - 如何?

时间:2013-08-23 11:03:44

标签: ios uitabbarcontroller uicollectionview

我正在创建一个包含两个集合视图的tabbar应用。我成功地使用了两个标签栏来处理集合视图,但它们都从相同的图像文件夹中接收数据 - thumb&充分。因此,两个选项卡上的图像目前相同。

我希望找出从不同文件夹中显示不同图像的最佳方法,所以它们不一样?

如果您需要任何进一步的信息,请告诉我。

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

1 个答案:

答案 0 :(得分:1)

使用imageWithName[[NSBundle mainBundle] pathForResource:imageNameToLoad ofType:@"JPG"]时,您需要控制对不同大小的图像的访问权限,而不是使用不同的文件夹但使用不同的文件名。如果您想使用不同的文件夹,那么通常不会使用NSBundle来加载。

根据您的评论,您甚至不一定需要使用其他类或重复。考虑重用。如果控制器的逻辑相同但图像大小/位置不同,那么您可以向类中添加一些属性来设置这些详细信息,然后可以实例化一个类并配置为在两种情况下都能工作。