我怎样才能调用这个函数?

How can I call this function?

我现在被困住了,我已经尝试了所有对我来说合乎逻辑的方法来完成这项工作,但没有运气......

我在单独的 swift 文件中得到了这个:

导入基金会 导入 UIKit

class MyViewController: UIViewController {

    func background() {
        var imageView : UIImageView
        imageView  = UIImageView(frame:CGRectMake(0, 0, 100, 300));
        imageView.image = UIImage(named:"bg.jpg")
        self.view.addSubview(imageView)
    }
}

我想将它调用到一个单独的视图控制器文件中。我这样做的原因是因为这样我就可以在我所有的视图控制器中调用背景 class 而我不必在每个视图控制器中都执行相同的代码。

我试过的称呼方式有:

MyViewController.background() - 我收到错误 Missing parameter for #1 in call

background() - 我得到错误 Use of unresolved identifier 'background'

MyViewController() - 我没有收到错误,但什么也没发生。

如果有人能告诉我如何将此函数调用到视图控制器中的 'ViewDidLoad' 部分,我将不胜感激。

谢谢。

你找错人了。即使您可以在 MyViewController 中调用 background 方法,这仍然无法完成您想要完成的工作,因为当您在 "separate view controller file" 中调用 background 时,selfbackground 方法中将是 other 视图控制器 - 因此您将把 UIImageView 放入 other 视图控制器的视图中,不是 this 视图控制器的视图。如果您希望能够在每个视图控制器中分别执行相同的操作,则需要在每个视图控制器中使 background 方法在内部可用。

这样做的方法是通过扩展 background 注入到 UIViewController 本身 中,您的所有视图控制器都继承自它:

extension UIViewController {
    func background() {
        var imageView = UIImageView(frame:CGRectMake(0, 0, 100, 300))
        imageView.image = UIImage(named:"bg.jpg")
        self.view.addSubview(imageView)
    }
}

现在,您应用中的任何 视图控制器只需说self.background()(或简单地background())即可调用此方法。