从另一个类访问 UI 操作



我的应用程序中有一个"在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的类型更改为"设置视图控制器",问题就会消失。但正如我之前所说,我将在三个不同的视图控制器中使用此方法。

如何解决此问题?

试试这个:

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()
    }
}

最新更新