我尝试使用UIimageview
调用的类中的方法更新viewDidLoad()
图像。我试图改变图像:
MyIMage.image = UIImage(named: "image2")
但它给我的错误是:
Instance member cannot be used on type "view controller"
我哪里错了?
我的代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet var MyImage: UIImageView!
var MyStruct = ChangeImage()
struct ChangeImage {
private var _isChanged: Bool = false
mutating func Set_Change(val: Bool) {
if (val) {
MyImage.image = UIImage(named: "image2")
self._isChanged = true
} else {
MyImage.image = UIImage(named: "image1")
self.isChanged = false
}
}
func isChanged()-> Bool {
return self._isChanged
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
MyStruct.Set_Change(val: true)
print (MyStruct.isChanged())
}
}
答案 0 :(得分:0)
我认为您的问题是结构无法使用ViewController
类中的变量,因此我将其更改为执行相同操作的函数:
import UIKit
class ViewController: UIViewController {
@IBOutlet var myImage: UIImageView!
func Set_Change(val: Bool) -> Bool {
if (val) {
myImage.image = UIImage(named: "image2")
return true
} else {
myImage.image = UIImage(named: "image1")
return false
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let didChange = Set_Change(val: true)
print(didChange)
}
}
答案 1 :(得分:0)
以下是更正后的代码的摘录,但行中出现相同的错误:let _myImage = MyImage()
class ViewController: UIViewController {
@IBOutlet var MyImage: UIImageView!
var MyStruct = ChangeImage()
struct ChangeImage {
private var _isChanged: Bool = false
let _myImage = MyImage() // ----> Error : Instance member ‘MyImage’ cannot be used on type ‘ViewController’
mutating func Set_Change(val: Bool) {
if (val) {
_myImage.image = UIImage(named: "image2")
self._isChanged = true
} else {
_myImage.image = UIImage(named: "image1")
self._isChanged = false
}
}
func isChanged()-> Bool {
return self._isChanged
}
}
答案 2 :(得分:0)
以下是有效的解决方案:
import UIKitclass ViewController: UIViewController {
@IBOutlet var MyImage: UIImageView! // Insert Outlet Image : "MyImage" // Structure ChangeImage struct ChangeImage { private var _isChanged: Bool = false private var _myImage: UIImageView! // Private variable _myImage init (ImgView: UIImageView) { // Initiate ImgView called since func viewDidLoad() self._myImage = ImgView // Private variable _myImage = ImgView ( variable MyImage in func viewDidLoad() ) } mutating func Set_Change(val: Bool) { if (val) { _myImage.image = UIImage(named: "image2") self._isChanged = true } else { _myImage.image = UIImage(named: "image1") self._isChanged = false } } func isChanged()-> Bool { return self._isChanged } } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. var MyStruct = ChangeImage(ImgView: MyImage) // Initiate Structure ChangeImage with variable MyImage. MyStruct.Set_Change(val: true) print (MyStruct.isChanged()) }
}
)