Проверьте, установлено ли изображение с именем (WatchKit)

Я хотел бы проверить, установлено ли изображение с именем "image.png" в виде изображения "imgView". Я знаю, как я могу сделать это с помощью Swift в обычном ViewController.swift, но не знаю, как я могу сделать это в расширении набора часов (InterfaceController.swift). Кто-нибудь из вас, ребята, знает, как я могу это сделать?


person Vpor    schedule 09.06.2015    source источник


Ответы (1)


Глядя на заголовок для WKInterfaceImage:

@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 есть только сеттеры и нет геттеров. Одной из стратегий может быть подкласс этого и отслеживание настройки, а также написание собственных пользовательских геттеров, но, к сожалению, вы не можете перейти на пользовательский класс в раскадровке, поэтому вы все равно не можете использовать этот пользовательский подкласс. Вы также не сможете программно читать изображения, которые были установлены непосредственно из раскадровки.

Но чтобы ответить на ваш вопрос, вы не можете спросить 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
}
person thealienisreal    schedule 09.06.2015