我想以编程方式在函数中创建图像视图。这将保留图像视图的背景和一些徽标 - 然后在我的所有其他图像视图中,我可以完成所有功能,并且我不必在每个图像上执行相同的操作。
我创建了一个空白的swift文件并在其中加入以下内容:
import Foundation
import UIKit
func background() {
var imageView : UIImageView
imageView = UIImageView(frame:CGRectMake(10, 50, 100, 300));
imageView.image = UIImage(named:"image.jpg")
self.view.addSubview(imageView)
}
我遇到的唯一错误是self.view.addSubview(imageView)
行。错误消息为Use of unresolved identifier 'self'
。我尝试删除单词self,以便该行代替view.addSubview(imageView)
,然后Use of unresolved identifier 'view'
。
我的问题是我做错了什么?
由于
编辑:
所以我现在把它改成了这个,这是正确的吗?
导入基金会 导入UIKit
class MyViewController: UIViewController {
func background() {
var imageView : UIImageView
imageView = UIImageView(frame:CGRectMake(10, 50, 100, 300));
imageView.image = UIImage(named:"bg.png")
self.view.addSubview(imageView)
}
}
我不再在该部分中出现任何错误,但是当从viewcontroller类调用该函数时,我在视图中得到了错误消息Use of unresolved identifier 'background'. I should add that I am calling it in the other document by doing this
background()`do load function。
答案 0 :(得分:2)
要在swift中调用实例函数,您可以采用两种方式,一种来自另一个实例函数,或者通过创建该类的实例然后调用它。
来自实例函数:
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Called from within another instance function
self.background()
}
func background() {
var imageView : UIImageView
imageView = UIImageView(frame:CGRectMake(10, 50, 100, 300));
imageView.image = UIImage(named:"bg.png")
self.view.addSubview(imageView)
}
}
或者在代码中的其他地方,您可以创建一个实例并调用这样的背景:
func someOtherFunction() {
// Create instance and then call background
var myView:MyViewController = MyViewController()
myView.background()
}
我建议您了解实例方法与类方法之间的区别,并确定您要执行的操作: What is the difference between class and instance methods?
答案 1 :(得分:0)
您需要一个属于UIViewController
的子类的类才能访问view
属性