2016-05-28 3 views
2

У меня есть UICollectionView в контроллере вида. Когда пользователь нажимает на одно из изображений, он переходит на отдельную страницу, чтобы открыть изображение. Я хотел бы вместо того, чтобы каждый раз возвращаться в галерею, чтобы сменить фотографии, проведите пальцем влево или вправо, чтобы получить следующее или предыдущее изображение.UICollectionView прокрутка/прокрутка до следующего элемента swift

Я видел ответы, чтобы сделать «pagingEnabled = true», но где вы это положили?

Я новичок в быстром.

Ниже приведен мой код. Спасибо за помощь заранее.

ViewController.swift

import UIKit 

class ViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate 
{ 
@IBOutlet weak var collectionView: UICollectionView! 

let appleProducts = ["iPhone", "Apple Watch", "Mac", "iPad"] 
let imageArray = [UIImage(named: "pug"), UIImage(named: "pug2"), UIImage(named: "pug3"), UIImage(named: "pug4")] 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
} 

override func didReceiveMemoryWarning() 
{ 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int 
{ 
    return self.appleProducts.count 
} 

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell 
{ 

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! CollectionViewCell 

    cell.imageView?.image = self.imageArray[indexPath.row] 

    cell.titleLabel?.text = self.appleProducts[indexPath.row] 

    return cell 

} 

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) 
{ 
    self.performSegueWithIdentifier("showImage", sender: self) 
} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
{ 
    if segue.identifier == "showImage" 
    { 
     let indexPaths = self.collectionView!.indexPathsForSelectedItems()! 
     let indexPath = indexPaths[0] as NSIndexPath 
     let vc = segue.destinationViewController as! NewViewController 
     vc.image = self.imageArray[indexPath.row]! 
     vc.title = self.appleProducts[indexPath.row] 
    } 
} 

} 

CollectionViewCell.swift

import UIKit 

class CollectionViewCell: UICollectionViewCell 
{ 
@IBOutlet weak var imageView: UIImageView! 
@IBOutlet weak var titleLabel: UILabel! 
} 

NewViewController.swift

import UIKit 

class NewViewController: UIViewController 
{ 
@IBOutlet weak var imageView: UIImageView! 
var image = UIImage() 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    self.imageView.image = self.image 
} 

override func didReceiveMemoryWarning() 
{ 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 


/* 
// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
} 
*/ 

} 

ответ

0

В контроллере представления, который представлен после крана, вы должны сделать по горизонтали прокрутка UICollectionView. В этом представлении коллекции установите для свойства pagingEnabled значение true.

Следующее, что нужно сделать, это переформатировать ваш метод prepareForSegue в контроллере родительского представления, чтобы передать весь массив изображений представленному контроллеру представления, а также выбранному пути указателя.

Затем в представленном контроллере представления вы должны настроить источник данных для представления, чтобы показать все изображения, но не забудьте начать с начального, выбранного пути индекса, который был передан родительским контроллером представления.

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