0

Since Swift 2, there is a cleaner way to check if some class or property is available:

@available(iOS 8.0, *)
var someVarHere = someClassHere()

however, I can't find anywhere how to check for protocol availability, e.g. SFSafariViewControllerDelegate. Any suggestions?

user3352185
  • 87
  • 1
  • 10

1 Answers1

0

Thanks to @lu_, I got a solution: Using extensions.

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        if #available(iOS 9, *) {
            let sfc = SFSafariViewController(URL: NSURL(string: "http://www.google.bg")!)
            sfc.delegate = self
            presentViewController(sfc, animated: true, completion: nil)
        }
    }
}

@available(iOS 9, *)
extension ViewController: SFSafariViewControllerDelegate {
    func safariViewControllerDidFinish(controller: SFSafariViewController) {
        controller.dismissViewControllerAnimated(true, completion: nil)
    }
}
user3352185
  • 87
  • 1
  • 10