2014-09-25 10 views
20
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) 
} 

ich immer einen Fehler mitSwift führt Segue

„Implizite Verwendung von 'Selbst' in Schließung bekommen verwenden Capture semantischen explicit“

aber wenn ich self.view gesetzt, es nicht auch zu machen.

+0

Vielleicht ist es eine andere gespeicherte Eigenschaft, die das Problem verursacht . Wo sind currentLong, currentLat und url zum Beispiel definiert? –

Antwort

63

Sie müssen explizit selbst verwenden:

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

Und für Swift 3 (thx @KingChintz):

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

+2

in Swift3 wird das Äquivalent sein: '' 'self.performSegue (withIdentifier:" theID ", sender: self)' '' – KingChintz

0

Für Swift 3

_ = self.navigationController?.popToRootViewController(animated: false)