// // UIViewController+StoryboardSegueIdentifierProtocol.swift // R.swift Library // // Created by Mathijs Kadijk on 06-12-15. // From: https://github.com/mac-cain13/R.swift.Library // License: MIT License // import Foundation import UIKit public protocol SeguePerformerType { func performSegue(withIdentifier identifier: String, sender: Any?) } extension UIViewController: SeguePerformerType {} public extension SeguePerformerType { /** Initiates the segue with the specified identifier (R.segue.*) from the current view controller's storyboard file. - parameter identifier: The R.segue.* that identifies the triggered segue. - parameter sender: The object that you want to use to initiate the segue. This object is made available for informational purposes during the actual segue. - SeeAlso: Library for typed block based segues: [tomlokhorst/SegueManager](https://github.com/tomlokhorst/SegueManager) */ func performSegue(withIdentifier identifier: StoryboardSegueIdentifier, sender: Any?) { performSegue(withIdentifier: identifier.identifier, sender: sender) } } public extension StoryboardSegue where Source : UIViewController { /** Performs this segue on the source view controller - parameter sender: The object that you want to use to initiate the segue. This object is made available for informational purposes during the actual segue. */ func performSegue(sender: Any? = nil) { source.performSegue(withIdentifier: identifier.identifier, sender: sender) } }