我正在创建一个包含两个集合视图的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
答案 0 :(得分:1)
使用imageWithName
或[[NSBundle mainBundle] pathForResource:imageNameToLoad ofType:@"JPG"]
时,您需要控制对不同大小的图像的访问权限,而不是使用不同的文件夹但使用不同的文件名。如果您想使用不同的文件夹,那么通常不会使用NSBundle
来加载。
根据您的评论,您甚至不一定需要使用其他类或重复。考虑重用。如果控制器的逻辑相同但图像大小/位置不同,那么您可以向类中添加一些属性来设置这些详细信息,然后可以实例化一个类并配置为在两种情况下都能工作。