У меня есть 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]
}
}
}
Thats для помощи, но я думаю, что я сделал этот автобус, все еще смущенный. Пожалуйста, посмотрите дополнительный код, который я добавил, и дайте мне знать, какие изменения я должен сделать! Мне нужно установить начальное изображение на основе ячейки cellView, которую кто-то нажал, а затем прокрутить оставшуюся часть массива. Мой код всегда устанавливает его в первые ячейки изображения в массиве self.galleryImageView.image = self.convertedURLToImages [0]. Я не знаю, как сделать снимок пользователем вместо этого статического индекса! – SteveSmith
Почему бы не дать свой 'galleryViewController' свойство' selectedIndex', которое вы можете установить в 'prepareForSegue', а затем использовать это как отправную точку для анимации. Кажется, что ваш последний комментарий в дополнительном коде кажется почти таким. – sgib
@sgib Можете ли вы показать мне пример (код), пожалуйста? Я никогда этого не делал раньше. Спасибо – SteveSmith