我想更改UIImage视图的值。 这是我到目前为止所做的。
import UIKit
import Foundation
struct imageViews {
var Slope1ImageView: UIImage?
var slopeStatus = dataValues()
func setSlope1Image(slopeStatus1: Int) -> UIImage {
var image: String
switch slopeStatus1 {
case 0:
image = "NotWorkingStatus"
default:
image = "WorkingStatus"
}
var statusImage = UIImage(named: image)
return statusImage
}
}
这是我的设置。 我有一个从Parse获取对象的文件。 这将是0或1。 然后我将0或1分配给结构中的变量。
在上面的代码中,我创建了一个这个结构的实例。 然后我创建了一个函数,它将从我的struct中获取一个变量并检查它是否具有零值,然后将变量图像设置为相应的图像。如果它没有将它设置为不同的图像。
如何以这种方式将Slope1ImageViews的变量设置为函数选择的图像。
Slope1ImageView = setSlope1Image(slopeStatus.SlopeStatus1)
每次尝试我都会遇到错误 无法分配到" Slope1ImageView"在" self"
我的智慧结束了! 任何帮助将不胜感激。
答案 0 :(得分:0)
我认为您的问题在于Slope1ImageView。如果第一个字母是大写的,Swift假设你指的是一个类。此外,您需要将local分配给变量或常量。结构也应该首字母大写。假设其他一切设置正确,您可能只需要做这样的事情。
struct ImageViews {
// existing code...
}
var instanceOfStruct = ImageViews()
var slope1imageView: UIImage = instanceOfStruct.setSlope1Image(slopeStatus.SlopeStatus1)
答案 1 :(得分:0)
这里有很多事情,我会谈谈一些。
声明
你不应该使用结构。图像通常是相当大的对象,您不希望它们在您的应用程序中被复制。它们应该保持引用类型并且在类中。结构/类也应该大写以遵守惯例,而属性应该是小写的。你也有你的名字作为复数,暗示它是一个数组,它不应该是这样的。此外,除非它是imageView,否则不要将某些内容命名为imageView。在同一行上,如果图像是字符串,请不要将其命名。此外,除非设置了某些内容,否则不要在函数前加上set。你的函数返回一些东西,所以get前缀可能更好。我觉得你想在self
内设置图像,所以让我们这样做。所以第一步是改变这个:
struct imageViews {
var Slope1ImageView: UIImage?
var slopeStatus = dataValues()
func setSlope1Image(slopeStatus1: Int) -> UIImage {
var image: String
switch slopeStatus1 {
case 0:
image = "NotWorkingStatus"
default:
image = "WorkingStatus"
}
var statusImage = UIImage(named: image)
return statusImage
}
}
对此:
class SlopeStatus {
var slope1Image: UIImage?
var slopeStatus = dataValues()
func setSlope1Image(slopeStatus1: Int) {
var imageString: String
switch slopeStatus1 {
case 0:
image = "NotWorkingStatus"
default:
image = "WorkingStatus"
}
slope1Image = UIImage(named: image)
}
}
分配
您尝试使用以下内容将UIImage
分配给Class
:
Slope1ImageView = setSlope1Image(slopeStatus.SlopeStatus1)
通过上述更改,它应该是
var slopeStatusImageObject = SlopeStatus()
slopeStatusImageObject.setSlope1Image(slopeStatus.SlopeStatus1)