我现在被困住了,我已经尝试了一切对我来说合乎逻辑的方法来完成这项工作,但没有运气......
我在一个单独的 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)
}
}
我想将它调用到一个单独的 View Controller 文件中。我这样做的原因是因为这样我就可以在我所有的 View Controller 中调用后台类,而不必在每个 View Controller 中都执行相同的代码。
我尝试过的调用方式是:
MyViewController.background()
- 我收到错误 Missing parameter for #1 in call
background()
- 我收到错误 Use of unresolved identifier 'background'
MyViewController()
- 我没有收到错误,但什么也没发生。
如果有人能告诉我如何将此函数调用到 View Controller 中的“ViewDidLoad”部分,我将不胜感激。
谢谢。
最佳答案
你找错人了。即使您可以在 MyViewController 中调用 background
方法,这仍然无法完成您想要完成的工作,因为当您在“单独的 View Controller 文件”中调用 background
时,background
方法中的 self
将是 other View Controller - 因此您会将 UIImageView 放入 other View Controller 的 View ,而不是this View Controller 的 View 。如果您希望能够在每个 View Controller 中分别执行相同的操作,则需要使 background
方法在每个 View Controller 的内部可用。
做到这一点的方法是通过扩展将 background
注入(inject) UIViewController 本身,您的所有 View Controller 都继承自该扩展:
extension UIViewController {
func background() {
var imageView = UIImageView(frame:CGRectMake(0, 0, 100, 300))
imageView.image = UIImage(named:"bg.jpg")
self.view.addSubview(imageView)
}
}
现在,您应用中的任何 View Controller 只需说self.background()
(或简单地background()
)即可调用此方法.
关于class - 我怎样才能调用这个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29395862/