检查是否设置了带有名称的图像(WatchKit)

Check if image with name is set (WatchKit)

我想检查名称为 "image.png" 的图像是否设置为图像视图 "imgView"。我知道如何在普通 ViewController.swift 中使用 Swift 执行此操作,但不知道如何在手表套件扩展 (InterfaceController.swift) 中执行此操作。你们有人知道我该怎么做吗?

查看 WKInterfaceImage 的 header:

@available(watchOS 2.0, *)
class WKInterfaceImage : WKInterfaceObject, WKImageAnimatable {

    func setImage(image: UIImage?)
    func setImageData(imageData: NSData?)
    func setImageNamed(imageName: String?)

    func setTintColor(tintColor: UIColor?)
}

API 只有 setter 没有 getter。一种策略可能是 subclass this 并跟踪设置,然后编写您自己的自定义 getter,但不幸的是,您无法在情节提要中更改为自定义 class,因此您不能使用它自定义 subclass 无论如何。您也无法以编程方式直接读取从情节提要中设置的图像。

但是要回答你的问题,你不能问WKInterfaceImage它有什么图像。唯一的方法是像这样跟踪您手动设置的图像:

@IBOutlet var myImage: WKInterfaceImage!

var lastImageUsed: String? = "image.png" // Pre-populate with the image used for myImage in the storyboard

func setImageWrapper(newImage: String) {
    lastImageUsed = newImage
    myImage.setImageNamed(newImage)
}

func getImageWrapper() -> String? {
    return lastImageUsed
}