1

UICollectionViewController (ナビゲーションコントローラー付き) があり、通常の ViewController (画像ごとに異なる) に「プッシュ」するセルに画像を表示したいと考えています。それ、どうやったら出来るの?

4

1 に答える 1

4

UICollectionView でフォト ギャラリーを作成したいようです。ストーリーボードを使用する場合は、セグエを使用してください

- (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;
    }
}

didSelectItemAtIndexPath 内で nib: を使用する場合は、self.navigationController プッシュを使用します。

-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
    NSString *imageNameToLoad = [NSString stringWithFormat:@"%d_full", indexPath.row];
    NSString *pathToImage = [[NSBundle mainBundle] pathForResource:imageNameToLoad ofType:@"JPG"];
    UIImage *image = [[UIImage alloc] initWithContentsOfFile:pathToImage];
    DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
    detailViewController.image = image;
    [self.navigationController pushViewController:detailViewController animated:YES];
}

Apple のサンプル コード: https://developer.apple.com/library/ios/#samplecode/CollectionView-Simple/Introduction/Intro.html

CollectionView チュートリアル: http://www.raywenderlich.com/22324/beginning-uicollectionview-in-ios-6-part-12

于 2013-02-27T06:18:30.880 に答える