Я пытаюсь передать данные (selectedItem) из collectionView в imageViewController. Я не получаю счетчик увеличен, чтобы провести вверх по следующему изображению - PullRequest
1 голос
/ 01 мая 2020

Я пытаюсь передать данные (selectedItem) collectionView в imageViewController. Я не получаю увеличенный счетчик, чтобы смахнуть следующее изображение. Когда я нажимаю на ячейку, я получаю первое изображение (выбранное изображение) правильно. Но когда я провожу пальцем, изображение начинает первый элемент массива (imageViewController). Где я иду не так?

SelectedItem - это значение, которое я передаю из моего collectionViewController в imageViewController.

 import UIKit

    class ImageViewController: UIViewController,UIScrollViewDelegate {

    @IBOutlet weak var pageControl: UIPageControl!
    @IBOutlet weak var myScrollView: UIScrollView!
    var myImage = UIImage()
    var selectedItem: String!

    var images: [String] = ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15"]
    let imageView = UIImageView()
    var frame = CGRect(x:0,y:0,width:0,height:0)

override func viewDidLoad() {

    super.viewDidLoad()
    setupImageView()
    }
private func setupImageView() {

    var selectedImage = (selectedItem as NSString).integerValue


     for var index in 0..<images.count {


        frame.origin.x = myScrollView.frame.size.width * CGFloat(index)
                     frame.size = myScrollView.frame.size
                     let imageName = UIImageView(frame:frame)
                     imageName.image = myImage
                     index = selectedImage
                   myImage = UIImage(named: images[index])!
                   print(index)
                     myScrollView.showsVerticalScrollIndicator = false
                     self.myScrollView.addSubview(imageName)

}

    myScrollView.contentSize = CGSize(width: (myScrollView.frame.size.width * CGFloat(images.count)), height: myScrollView.frame.size.height)
     myScrollView.delegate = self

        }
        func scrollViewDidScroll(_ scrollView: UIScrollView) {
            let pageIndex = round(scrollView.contentOffset.x/view.frame.width)
            pageControl.currentPage = Int(pageIndex)
        }

    }

Ответы [ 2 ]

0 голосов
/ 03 мая 2020
  private func setupImageView() {
        for var index in 0..<images.count {

        frame.origin.x = myScrollView.frame.size.width * CGFloat(index)
        frame.size = myScrollView.frame.size
        let imageName = UIImageView(frame:frame)
        imageName.image = UIImage(named: images[index])!
        print(index)
        myScrollView.showsVerticalScrollIndicator = false
        self.myScrollView.addSubview(imageName)

    }

  func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        pageControl.currentPage = indexPath.row
    }

    myScrollView.contentSize = CGSize(width: (myScrollView.frame.size.width * CGFloat(images.count)), height: myScrollView.frame.size.height)
    myScrollView.delegate = self


    let indexpaths = UserDefaults.standard.value(forKey: "IndexPath") as! Int
    let x = Double(414 * indexpaths)  // here 414 is your current scroll view frame size 
    myScrollView.contentOffset = CGPoint(x: x, y: 0.0)
  }

just change your code with this code and your problem is sloved.
Thank you
0 голосов
/ 02 мая 2020

Чтобы работать с выбранным элементом, вы должны переопределить функцию collectionView didSelectItemAt:

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    pageControl.currentPage = indexPath.row
}

Кроме того, ваш код сильно отличается от вашего вопроса, и я не совсем понимаю вашу общую цель. Если вы хотите создать прокручиваемый список изображений, вы должны создать подкласс UICollectionViewCell вместо добавления UIImageView в UIScrollView. Вы можете увидеть пример GalleryViewController в этом открытом фрагменте моего .

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