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