Ios 如何在Swift 4中显示没有UIViewController的新屏幕?
我没有实现UIViewController,因为我已经从另一个类继承了,并且它给出了一个错误,即present不是这个类的成员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
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