1

コレクションビューでサムネイルをクリックすると、別のビューコレクターにあるスクロールビューで大きな画像を開くプログラムを作成しています。その目的のために、私はセグエを使用しています。しかし、私はそこで何か間違ったことをしています。どうすればこの問題を解決できますか?

セグエの私のコードは、

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

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

        GalleryImageScrollViewController *gallerydetailViewController = [segue destinationViewController];
        gallerydetailViewController.FullScreenImageScroller=image ;
    }
}

detailViewController.m

- (void)viewDidLoad
{
    [super viewDidLoad];


    NSMutableArray *mutablearray = [NSMutableArray array];
    data=[MyDatabase new];
    slideImages=[data OpenMyDatabase:@"SELECT pic_name_big FROM interior":@"pic_name_big"];
    [mutablearray addObjectsFromArray:slideImages];
    temparr = [[NSMutableArray alloc]init];
    temparr=[NSMutableArray arrayWithArray:mutablearray];
    [self putImageViewsInScrollView:[temparr count]];
    self.FullScreenImageScroller.delegate=self;

}




-(void) putImageViewsInScrollView:(int)numberOfImageViews
{
   for(int i=0 ;i<numberOfImageViews; i++)
    {
        fullScreenImageView=[[UIImageView alloc]initWithImage:[UIImage imageNamed:[temparr objectAtIndex:i]]];
        fullScreenImageView.frame = CGRectMake((WIDTH_OF_IMAGE * i)  , 0, WIDTH_OF_IMAGE, HEIGHT_OF_IMAGE);
        [self.FullScreenImageScroller addSubview:fullScreenImageView];
    }
    [self.FullScreenImageScroller setContentSize:CGSizeMake(WIDTH_OF_SCROLL_PAGE * ([temparr count]), HEIGHT_OF_IMAGE)];
    [self.FullScreenImageScroller setContentOffset:CGPointMake(0, 0)];
    [self.FullScreenImageScroller scrollRectToVisible:CGRectMake(WIDTH_OF_IMAGE,0,WIDTH_OF_IMAGE,HEIGHT_OF_IMAGE) animated:NO];


}

特定のサムネイルの画像を開くには、scrollviewコントローラー(GalleryImageScrollViewController)に何を渡す必要がありますか?

4

2 に答える 2

1

このように画像名を詳細View Controllerに渡します

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
 {
   NSArray *indexpaths = [self.collectionView indexPathsForSelectedItems];
   DetailViewController *dest = [segue destinationViewController];
   dest.imageName = [recipeImages objectAtIndex:[[indexpaths objectAtIndex:0] row]];
   // imageName is a property of detail view controller
}

次に、detailViewControllerのviewDidLoadで

- (void)viewDidLoad
 {
    [super viewDidLoad];

   self.imageView.image = [UIImage imageNamed:self.imageName];
}

私はスクロールビューを使用しておらず、サブビューとしてビューに追加されたimageViewのみです

ここに画像の説明を入力

于 2013-03-15T05:32:04.223 に答える
0

とてもシンプルです。選択したサムネイル画像のインデックスを GalleryImageScrollViewController に渡すだけです(上記の回答から..)

次に、detailViewController の viewDidLoad メソッドで、取得したインデックスを使用して imageView に画像を入力します。

detailViewControllerの viewDidLoad で

 -(void)viewDidLoad
  {
       [super viewDidLoad];
       self.imageView.image = [UIImage imageNamed:[[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"interior_%d", indexOfThatImage] ofType:@"png"]]];
  }

ファイル拡張子は、バンドルの拡張子と同じであることに注意してください。

于 2013-03-15T07:01:36.903 に答える