У меня есть два протокола с расширениями LoginPresenting
и LoginDismissing
. Я хочу, чтобы расширение LoginPresenting
применялось только к UIViewControllers
, которое также реализует LoginDismissing
. Я пытаюсь сделать это так, но пока не смог разобраться в синтаксисе.
protocol LoginDismissing : class {
func loginHasCompleted(withController: UIViewController)
}
extension LoginDismissing where Self:UIViewController {
func loginHasCompleted(withController controller:UIViewController) {
//...code ommited
}
}
protocol LoginPresenting : class {
func presentLogin()
}
Ниже приведен неверный код , но я думаю, что это объясняет, как я пытаюсь сделать LoginPresenting применимым только к UIViewControllers, которые также реализуют LoginDismissing.
extension LoginPresenting where Self:UIViewController, LoginDismissing //Syntax error here
func presentLogin() {
let lc = LoginViewController()
let nav = UINavigationController(rootViewController: lc)
nav.modalPresentationStyle = .fullScreen
lc.loginDismissingDelegate = self //type LoginDismissing
self.present(nav, animated: true, completion: nil)
}
}