現在、読み込んだ一つの動画から複数のサムネイルを取得し横に並べるiOSアプリを作成しています。動画からサムネイルを取得し横に並べることはできたのですが,そこから1つのサムネイルをタップした時に別のUIImageViewにそのサムネイルを表示したいのですがうまくできません。

現状の手法として、UIImageViewを継承したクラスを作成し、その値をタップイベントの方に送っているのですが、値が0,1,2など数字ではなく15桁などのランダムな数字が出てしまいます。

なぜそのような値が返ってくるのかわからないので教えていただけると助かります。また別な方法で構いません。

以下、ソースコード、実行結果と参考にしたサイトになります。

ソースコード

import UIKit
import AVFoundation
import AssetsLibrary

class ViewController: UIViewController, UIGestureRecognizerDelegate {

    @IBOutlet weak var topimage: UIImageView!
    @IBOutlet weak var scroll: UIScrollView!

    let time = 20

    class MyUIImageView: UIImageView{
        let x:Int
        let y:Int
        init(x:Int,y:Int,frame:CGRect){
            self.x = x
            self.y = y
            super.init(frame:frame)
        }
        required init(coder aDecoder: NSCoder) {
            fatalError("*** init(coder:) has not been implemented")
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        let filePath: URL = URL(fileURLWithPath: "動画のパス")
        let asset = AVURLAsset(url: filePath, options: nil)
        let imgGenerator = AVAssetImageGenerator(asset: asset)
        imgGenerator.appliesPreferredTrackTransform = true

        scroll.contentSize = CGSize(width: time * 100, height: 200)
        scroll.bounces = false
        self.scroll.isScrollEnabled = true
        self.scroll.showsHorizontalScrollIndicator = false

        do{
            for x in 0...time - 1{
            //位置を変えながらviewを作る
                let iv : UIImageView = MyUIImageView(
                    x:x,
                    y:1,
                    frame:CGRect(x:CGFloat(x)*100, y:100, width:100, height:150))

                //サムネイルの作成
                let cgImage = try imgGenerator.copyCGImage(at: CMTimeMake(Int64(seconds / (time - x)), 3), actualTime: nil)
                let thumbnail = UIImage(cgImage: cgImage)

                //画像をviewに追加
                iv.image = thumbnail
                //タップジェスチャ
                iv.isUserInteractionEnabled = true
                iv.addGestureRecognizer(UITapGestureRecognizer(
                    target: self,
                    action: #selector(imageViewTapped)))

                //画面に追加
                scroll.addSubview(iv)
            }
        }catch let error {
            print("*** Error generating thumbnail:\(error.localizedDescription)")
        }
    }

    @objc func imageViewTapped(views:MyUIImageView, gestureRecognizer: UITapGestureRecognizer) {
        //ここでxを取得できれば同じ上記と同じプログラムを書けば表示できると考えています。
        print(views.x)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()

    }
}

実行結果

view at (140434724710272) is tapped //一つ目のサムネイル
view at (0) is tapped //二つ目のサムネイル
view at (140434743678464) is tapped //三つ目のサムネイル
view at (140434724710848) is tapped //四つ目のサムネイル

参考サイト
https://qiita.com/fetaro/items/199e36d71ee9c0015488