我有一个"分享到Facebook"我的应用程序中的3个不同视图控制器按钮。所以我写了一个名为" ShareCentral"我想在这个课堂上做所有的分享操作。但是为了显示共享对话框,我需要将uiviewcontroller传递给我的ShareCentral类。我确实喜欢这样:
class ShareCentral {
var UIVC: UIViewController
init(vc:UIViewController) {
self.UIVC = vc
}
func shareOnFacebook() {
var content = LinkShareContent(url: URL(string:userProfileLink)!)
do {
try ShareDialog.show(from: UIVC, content: content)
}catch (let error) {
print(error)
}
}
}
这是我的视图控制器:
class SettingsViewController: UIViewController {
let shareCentral = ShareCentral(vc: self)
@IBAction func shareButtonClicked(_ sender: AnyObject) {
self.shareCentral.shareOnFacebook()
}
}
我收到以下编译错误:
SettingsViewController.swift:40:41: Cannot convert value of type '(SettingsViewController) -> () -> (SettingsViewController)' to expected argument type 'UIViewController'
我知道如果我将UIVC的类型更改为" SettingsViewController"问题就会消失。但正如我之前所说,我将在三个不同的视图控制器中使用此方法。
我该如何解决这个问题?
答案 0 :(得分:0)
请改为尝试:
class ShareCentral {
unowned var UIVC: UIViewController
init(vc:UIViewController) {
self.UIVC = vc
}
func shareOnFacebook() {
var content = LinkShareContent(url: URL(string:userProfileLink)!)
do {
try ShareDialog.show(from: UIVC, content: content)
} catch (let error) {
print(error)
}
}
}
class SettingsViewController: UIViewController {
var shareVC: ShareVC!
override func viewDidLoad() {
super.viewDidLoad()
self.shareVC = ShareVC(vc: self)
}
@IBAction func shareButtonClicked(_ sender: AnyObject) {
self.shareCentral.shareOnFacebook()
}
}