我怎么称呼这个功能?

时间:2015-04-01 16:19:49

标签: class swift viewcontroller

我现在非常困难,我已经尝试了一切对我来说合乎逻辑的工作但没有运气......

我在一个单独的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)
    }
}

我想将其称为单独的视图控制器文件。我这样做的原因是因为我可以在我的所有视图控制器中调用后台类,而且我不必在每个控制器中执行相同的代码。

我尝试过的方式是:

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

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

MyViewController() - 我没有收到错误但没有任何反应。

如果有人能告诉我如何将此功能称为我的ViewDidLoad'我真的很感激。部分在视图控制器中。

谢谢。

1 个答案:

答案 0 :(得分:3)

你正在咆哮错误的树。即使您可以在MyViewController中调用background方法,这仍然无法实现您要完成的任务,因为当您在“单独的视图控制器文件”中调用background时,{{1}在self方法中将是其他视图控制器 - 因此您将把UIImageView放入其他视图控制器的视图中,而不是这个查看控制器的视图。如果您希望能够在每个视图控制器中单独执行相同的操作,则需要在每个视图控制器内部使用background方法。

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

background

现在您应用中的任何视图控制器都可以说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())来调用此方法。