【问题标题】:iOS how index of image can be passed from collectionview to scrollviewiOS如何将图像索引从collectionview传递到scrollview
【发布时间】:2013-03-03 17:31:48
【问题描述】:

我正在创建一个程序,如果我单击 collectionview 中的缩略图,则应在另一个视图收集器中的滚动视图中打开更大的图像。为此,我正在使用 segue。但是我在那里做错了,我该如何解决这个问题,

我的 segue 代码是,

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


}

那么我应该在滚动视图控制器(GalleryImageScrollViewController)中传递什么来打开特定缩略图的图像?

【问题讨论】:

    标签: ios uiscrollview indexing thumbnails


    【解决方案1】:

    像这样将图像名称传递给详细视图控制器

    -(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 作为子视图添加到视图中

    【讨论】:

    • 谢谢伙计。我得到了它。但是如何将它传递给另一个视图控制器中的滚动视图。
    • 你可以使用相同的逻辑。将一个 imageView 添加到 scrollView 然后设置图像。 scrollView 与否无关紧要,您只能在 imageView 上设置图像。所以将imageView添加到scrollView
    • @Anil:我所做的是,我在滚动视图中添加了一个图像视图来显示图像。所以我没有在 detailViewScroller 的 viewDidLoad 中得到什么
    • 好的会帮助你的。在详细视图控制器中为 imageView 创建一个插座,然后像我一样在 viewDidLoad 中设置图像。我希望您已经通过 segue 将您的单元连接到 detailViewController。对于显示图像,这就足够了。进一步你可以调整滚动视图的内容大小
    • 感谢伙伴 :) 不要使用 UIScrollView。我应该在 detailViewController 中包含什么?
    【解决方案2】:

    它非常简单。只需将所选缩略图的索引传递给 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"]]];
      }
    

    请注意,您的捆绑包中的文件扩展名是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多