2016-04-19 3 views
0

У меня есть CollectionView с 12 изображениями. Когда я нажимаю на изображение, он должен отображать это изображение, взорванное на следующем экране. Проблема в том, что после этого конкретного изображения, которое я нажимаю, он появляется, чтобы оживить остальные 11 изображений. Как мне это сделать? У меня есть код, который анимируется через массив изображений, я просто не знаю, как показать конкретное изображение, которое я использую, а затем начать анимацию через массив.Как передать массив изображений другому виду?

Вот мой пример кода!

func convertUrlsToImage() { 
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { 
     for urls in self.arrayOfImageUrlsFromOtherView { 
      if let url = NSURL(string: urls) { 
       if let data = NSData(contentsOfURL: url) { 
        if let hingeImage = UIImage(data: data) { 
         self.convertedURLToImages.append(hingeImage) 

         dispatch_async(dispatch_get_main_queue(), { 
          if self.galleryImageView.image == nil { 
           self.galleryImageView.image = self.convertedURLToImages[0] 
          }else{ 
           print("Not empty") 
          } 
         }) 
        } 
       } 
      } 
     } 
    }) 
} 

func animateThroughArrayOfImages() { 
    let currentIndex = convertedURLToImages.indexOf(galleryImageView.image!) 
    let nextIndex = (currentIndex! + 1) % self.convertedURLToImages.count 

    self.title = "\(nextIndex+1)" + "/\(convertedURLToImages.count)" 
    self.galleryImageView.image = self.convertedURLToImages[nextIndex] 
} 

// Дополнительный код

override func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 

    if let cell = collectionView.cellForItemAtIndexPath(indexPath) { 

     performSegueWithIdentifier("nextView", sender: cell) 

    }else{ 
     print("no good") 
    } 
} 







override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 





    if let indexPath = self.collectionView?.indexPathForCell(sender as! ImageCollectionViewCell) { 

     if segue.identifier == "nextView" { 

      let galleryViewController = segue.destinationViewController as! GalleryViewController 


      //We are passing the url to the next screen then making another request to show them 
      let imageUrl = hingeImagesArray[indexPath.row] 


      //passesd a single image url 
      galleryViewController.imageUrlFromOtherScreen = imageUrl.imageUrl 






      //Pasing array of urls 
      galleryViewController.arrayOfImageUrlsFromOtherView = hingeImageUrls 

      //let myIndex = testImageArray[indexPath.row] 








     } 


    } 

} 

ответ

0

Ваша задача выглядит довольно просто. Просто реализовать этот делегат для CollectionView

optional func collectionView(_ collectionView: UICollectionView, 
didSelectItemAtIndexPath indexPath: NSIndexPath) 

Затем получить индекс изображения из indexPath. Затем вы можете передать этот индекс с массивом urls на следующий экран и использовать его для установки начального изображения.

Но в любом случае не стоит хранить все изображения в одном массиве в памяти.

+0

Thats для помощи, но я думаю, что я сделал этот автобус, все еще смущенный. Пожалуйста, посмотрите дополнительный код, который я добавил, и дайте мне знать, какие изменения я должен сделать! Мне нужно установить начальное изображение на основе ячейки cellView, которую кто-то нажал, а затем прокрутить оставшуюся часть массива. Мой код всегда устанавливает его в первые ячейки изображения в массиве self.galleryImageView.image = self.convertedURLToImages [0]. Я не знаю, как сделать снимок пользователем вместо этого статического индекса! – SteveSmith

+0

Почему бы не дать свой 'galleryViewController' свойство' selectedIndex', которое вы можете установить в 'prepareForSegue', а затем использовать это как отправную точку для анимации. Кажется, что ваш последний комментарий в дополнительном коде кажется почти таким. – sgib

+0

@sgib Можете ли вы показать мне пример (код), пожалуйста? Я никогда этого не делал раньше. Спасибо – SteveSmith

Смежные вопросы