Ios 如何在Swift 4中显示没有UIViewController的新屏幕?

Ios 如何在Swift 4中显示没有UIViewController的新屏幕?,ios,swift,swift3,Ios,Swift,Swift3,我没有实现UIViewController,因为我已经从另一个类继承了,并且它给出了一个错误,即present不是这个类的成员 func shareAppLink() { let name = "http://aijaz.com" let items = [name] as [Any] let ac = UIActivityViewController(activityItems: items, applicationActivities: nil

我没有实现UIViewController,因为我已经从另一个类继承了,并且它给出了一个错误,即present不是这个类的成员

func shareAppLink() {           
    let name = "http://aijaz.com"
    let items = [name] as [Any]

    let ac = UIActivityViewController(activityItems: items, applicationActivities: nil)
    present(ac, animated: true)     
}
present(quo:animated:completion:)
UIViewController
的一种方法,因此必须在某种类型的
UIViewController
上调用它

如果类最初是由视图控制器创建的,则可以尝试使用以下命令传入引用:

委托是一种简单而强大的模式,其中一个对象在 程序代表另一个对象或与之协调。 委托对象保留对另一个对象的引用 委托,并在适当的时间向其发送消息。这个 消息通知委托人委托对象正在处理的事件 即将处理或刚刚处理

如果您为自定义类创建了协议,如下所示:

protocol MyClassDelegate {
    func shareAppLink()
}

然后,您可以在视图控制器中遵循该协议,并调用如下方法:
delegate.shareAppLink()

您还可以使用重新排序器链来获取视图的父视图控制器

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类。这样就可以解决错误

错误是什么?错误:使用未解析的标识符“present”。选择单元格时,我想在我的UITableView中显示共享菜单。调用的
shareAppLink()
来自哪里?它在UITableView的didSelectRowAt函数中调用。这不是问题,它调用的地方实际上是如何显示共享按钮,因为在我的类中,present不是我使用的类的一部分。如何在没有UIActivityController的情况下使用当前方法。据我所知,您的
shareAppLink()
函数有一个单独的类。您可以从
didSelectRowAt
调用它。您是否已在顶部
shareAppLink()
函数类中添加了
import UIKit
?你可以试着做
self.present