I am new to swift (and Xcode development in general) and I was wondering how to make an ImageView on the storyboard clickable. What I'm trying to do is make it so when its clicked, it shows another view controller.
UIImage contains the data for an image. UIImageView is a custom view meant to display the UIImage .
You can add tapGesture for that. Here is the code:
class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() // create tap gesture recognizer let tapGesture = UITapGestureRecognizer(target: self, action: "imageTapped:") // add it to the image view; imageView.addGestureRecognizer(tapGesture) // make sure imageView can be interacted with by user imageView.userInteractionEnabled = true } func imageTapped(gesture: UIGestureRecognizer) { // if the tapped view is a UIImageView then set it to imageview if let imageView = gesture.view as? UIImageView { println("Image Tapped") //Here you can initiate your new ViewController } } }
Swift 3.0
class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() // create tap gesture recognizer let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.imageTapped(gesture:))) // add it to the image view; imageView.addGestureRecognizer(tapGesture) // make sure imageView can be interacted with by user imageView.isUserInteractionEnabled = true } func imageTapped(gesture: UIGestureRecognizer) { // if the tapped view is a UIImageView then set it to imageview if (gesture.view as? UIImageView) != nil { print("Image Tapped") //Here you can initiate your new ViewController } } }
Swift 5.0
class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() // create tap gesture recognizer let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.imageTapped(gesture:))) // add it to the image view; imageView.addGestureRecognizer(tapGesture) // make sure imageView can be interacted with by user imageView.isUserInteractionEnabled = true } @objc func imageTapped(gesture: UIGestureRecognizer) { // if the tapped view is a UIImageView then set it to imageview if (gesture.view as? UIImageView) != nil { print("Image Tapped") //Here you can initiate your new ViewController } } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With