0
我想創建一個當前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」沒有實現
現在我假設的原因是因爲在原有的功能,具有設置爲完成功能的默認參數作爲「無」。 但是,協議不支持默認參數。
所以對我的問題:我可以,如果是這樣,創建一個協議,其中UIViewController.present(...)函數可以符合?
良好的通話。和一個偉大的閱讀!!!,我已經擴展到UIViewController。但是現在出現以下錯誤: 方法'presentViewController:animated:completion:'由方法'present(_:animated:completion :)'提供'與要求的選擇器不匹配('present:animated:completion:') – giLisH
I不能重現這一點。你確定你的協議正是你在這裏列出的嗎?特別是,你確定你在第一個參數之前不會錯過'_'嗎? –
我編輯了這個問題以更好地反映我正在嘗試做的事情。 到你的q:_不是從func中丟失的。 謝謝! – giLisH