Swift - perform Segue
Asked Answered
K

2

28
if (view.annotation.title as String!) == "Helgoland " {
  currentLong = 7.889021
  currentLat = 54.180210 
  url = "google.com"

  let alertController: UIAlertController = UIAlertController(title: "Change Map Type", message: nil, preferredStyle: UIAlertControllerStyle.Alert)
  let cancelAction: UIAlertAction = UIAlertAction(title: "Back", style: UIAlertActionStyle.Cancel, handler: nil)
  let button1action: UIAlertAction = UIAlertAction(title: "Product Page", style: UIAlertActionStyle.Default, handler: { (action: UIAlertAction!) -> () in
    performSegueWithIdentifier("showShop", sender: self)
  })
  let button2action: UIAlertAction = UIAlertAction(title: "Video", style: UIAlertActionStyle.Default, handler: { (action: UIAlertAction!) -> () in
    youtubeVideoID = "XX"
    UIApplication.sharedApplication().openURL(NSURL(string: "http://www.youtube.com/watch?v=\(youtubeVideoID)"))
  })
  alertController.addAction(cancelAction)
  alertController.addAction(button1action)
  alertController.addAction(button2action)
  self.presentViewController(alertController, animated: true, completion: nil)
}

I always get an error with

"Implicit use of 'self' in closure; use 'self.' to make capture semantic explicit"

but if I set self.view, it also fails.

Kiyohara answered 25/9, 2014 at 13:17 Comment(1)
Perhaps it's another stored property causing the problem. Where are currentLong, currentLat and url defined for example?Antipole
P
79

You'll need to explicitly use self :

self.performSegueWithIdentifier("showShop", sender: self)

And for Swift 3 (thx @KingChintz) :

self.performSegue(withIdentifier: "showShop", sender: self)

Pentstemon answered 25/9, 2014 at 13:39 Comment(1)
in Swift3, the equivalent will be: self.performSegue(withIdentifier: "theID", sender: self)Calvinism
S
0

For Swift 3

 _ =  self.navigationController?.popToRootViewController(animated: false)
Swayder answered 23/8, 2017 at 13:20 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.