現在のUIViewController.present機能が準拠しているプロトコル(デリゲート)を作成したいと思います。UIViewControllerのpresent()関数のSwiftプロトコル
ので、例えばプロトコルは次のとおりです。
protocol PresentPopupDelegate
{
func doSomething()
func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Swift.Void)?)
}
このプロトコルに準拠する必要があるクラスがある:
class MyViewController:UIViewController, PresentPopupDelegate {
func doSomething()
}
と、私はこのコードを持って言うことができます:
let delegate:PresentPopupDelegate
init() {
self.delegate = MyViewController()
}
これをコンパイルすると、警告が表示されます。
を実装していないプロトコルの「PresentPopupDelegateは」今私は、元の関数で補完機能に設定されたデフォルトのパラメータを持っているので、理由があると仮定しています"無し"とします。 しかし、プロトコルはデフォルトのパラメータをサポートしていません。私の質問にそうメソッド「存在:アニメーション:完了:」
:I、およびので、どのように場合は、UIViewController.present(...)関数が準拠可能なプロトコルを作成することはできますか?
よろしくお願いします。素晴らしい読み物!!!、私はUIViewControllerに拡張機能を追加しました。 方法「presentViewController::アニメーション:完了:」しかし、今、次のエラー取得しています方法により提供さ「が存在し(_:完了:):アニメーション」) – giLisH
I要件のセレクタ(「:アニメーション:完了存在」と一致しません。これを再現することはできません。あなたのプロトコルはあなたがここに挙げたものとまったく同じですか?特に、最初のパラメータの前に '_'が足りないことは確かですか? –
私は私が何をしようとしているよりよく反映するために質問を編集しました。 あなたのqに:_はfuncから欠落していません。 ありがとう! – giLisH