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)
}
我总是出错
"Implicit use of 'self' in closure; use 'self.' to make capture semantic explicit"
但是如果我设置self.view
,它也会失败。
最佳答案
您需要显式使用 self :
self.performSegueWithIdentifier("showShop", sender: self)
对于 Swift 3(感谢@KingChintz):
self.performSegue(withIdentifier: "showShop", 发件人: self)
关于ios - Swift - 执行 Segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26039672/