我尚未实现该UIViewController,因为我已经继承了另一个类。并给出了错误,该错误不是该类的成员
func shareAppLink() {
let name = "http://aijaz.com"
let items = [name] as [Any]
let ac = UIActivityViewController(activityItems: items, applicationActivities: nil)
present(ac, animated: true)
}
[present(_:animated:completion:)
是UIViewController
的方法,因此必须在某些类型的UIViewController
上调用它。
如果您的类最初是由视图控制器创建的,则可以尝试使用delegation pattern传递引用:
委托是一种简单而强大的模式,其中一个对象程序代表另一个对象或与另一个对象协同工作。委托对象保留对另一个对象的引用-委托-并在适当的时间向其发送消息。的消息通知事件的委托者委托对象是即将处理或刚刚处理。
如果您为自定义类创建了协议,如下所示:
protocol MyClassDelegate {
func shareAppLink()
}
然后,您可以在View Controller中遵守该协议,并以如下方式调用该方法:delegate.shareAppLink()
您还可以使用Respoder Chain获取视图的父视图控制器
extension UIView {
var parentViewController: UIViewController? {
var parentResponder: UIResponder? = self
while parentResponder != nil {
parentResponder = parentResponder!.next
if let viewController = parentResponder as? UIViewController {
return viewController
}
}
return nil
}
}
并像]那样声明您的shareAppLink函数>
func shareAppLink(sender : UIView) { let name = "http://aijaz.com" let items = [name] as [Any] let ac = UIActivityViewController(activityItems: items, applicationActivities: nil) sender.parentViewController(ac, animated: true) }
然后在didSelectRowAt中,您可以将其称为:
self.shareAppLink(sender : cell)
您必须继承UIViewController子类或UIViewController类。这样可以解决错误。