gpt4 book ai didi

ios - 将携带委托(delegate)的 UIViewcontroller 作为参数传递给 swift 函数的问题

转载 作者:行者123 更新时间:2023-11-28 09:15:29 25 4
gpt4 key购买 nike

class func invite(_cntrl : UIViewController) 
{
// code to open mail composer sheet
}

此方法需要接受符合 MFMailComposeViewControllerDelegate 的 Controller 。

目前它给出错误:

Type 'UIViewController' does not conform to protocol 
'MFMailComposeViewControllerDelegate'

如何通过 uiviewconroller 符合 MFMailComposeViewControllerDelegate

类似的东西:

class func invite(_cntrl : UIViewController<MFMailComposeViewControllerDelegate>)
{
// code to open mail composer sheet
}

最佳答案

我相信如果您将参数类型设置为 MFMailComposeViewControllerDelegate,它会接受。

所以你的函数是:

class func invite(_cntrl : MFMailComposeViewControllerDelegate)

Swift Language Guide 中的作为类型的协议(protocol)中找到

编辑:

进一步澄清后,由于您希望能够通过也符合 MFMailComposeViewControllerDelegate 的 UIViewController 的子类,因此扩展 UIViewController 类似乎是最好的方法。 (这些类似于 ObjC 类别。

例如

extension UIViewController : MFMailComposeViewControllerDelegate
{
optional func mailComposeController(_ controller: MFMailComposeViewController!,
didFinishWithResult result: MFMailComposeResult,
error error: NSError!)
{
self.dismissViewControllerAnimated(flag:true, completion:nil);
}
}

关于ios - 将携带委托(delegate)的 UIViewcontroller 作为参数传递给 swift 函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27859992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com