I try to pass imageName string data from ViewController to ImageViewController which also func sliderImageTapped is sending data to CPImageSlider class
//  ViewController.swift
import UIKit
let _AUTO_SCROLL_ENABLED : Bool = false
class ViewController: UIViewController, CPSliderDelegate {
    var imagesArray = [String]()
    var passDataDelegate: PassImageName?
    @IBOutlet weak var slider : CPImageSlider!
    @IBOutlet weak var autoSwitch : UISwitch!
    @IBOutlet weak var arrowSwitch : UISwitch!
    @IBOutlet weak var indicatorSwitch : UISwitch!
    @IBOutlet weak var sliderSwitch : UISwitch!
    @IBOutlet weak var circularSwitch : UISwitch!
    override func viewDidLoad() {
        super.viewDidLoad()
        imagesArray = ["wallpaper1.jpg","wallpaper2.jpg","wallpaper3.jpg","wallpaper4.jpg"]
        slider.images = imagesArray
        slider.delegate = self
        let zoom : CGFloat = 0.8
        autoSwitch.transform = CGAffineTransform(scaleX: zoom, y: zoom)
        arrowSwitch.transform = CGAffineTransform(scaleX: zoom, y: zoom)
        indicatorSwitch.transform = CGAffineTransform(scaleX: zoom, y: zoom)
        sliderSwitch.transform = CGAffineTransform(scaleX: zoom, y: zoom)
        circularSwitch.transform = CGAffineTransform(scaleX: zoom, y: zoom)
        autoSwitch.isOn = slider.autoSrcollEnabled
        arrowSwitch.isOn = slider.enableArrowIndicator
        indicatorSwitch.isOn = slider.enablePageIndicator
        sliderSwitch.isOn = slider.enableSwipe
        circularSwitch.isOn = slider.allowCircular
    }
    func sliderImageTapped(slider: CPImageSlider, imageName: String, index: Int) {
        passDataDelegate?.passData(clickedImageName: imageName)
        guard let destinationVC = storyboard?.instantiateViewController(withIdentifier: "ImageViewController") as? ImageViewController else {
            return
        }
        present(destinationVC, animated: true, completion: nil )
        print("\(index)")
    }
}
//  ImageViewController.swift
import UIKit
protocol PassImageName {
    func passData(clickedImageName:String)
}
class ImageViewController: UIViewController, PassImageName {
    @IBOutlet weak var image: UIImageView!
    var imageName:String?
    func passData(clickedImageName: String) {
         imageName = clickedImageName
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        image.image = UIImage(named: imageName ?? "wallpaper1.jpg")
    }
    @IBAction func dismiss(_ sender: UIButton) {
        dismiss(animated: true, completion: nil)
    }
}
 
     
     
    