0

我正在创建一个带有两个集合视图的标签栏应用程序。我成功地让 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
4

1 回答 1

1

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

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

于 2013-08-23T11:17:50.783 回答