WKInterfaceLabel в пользовательской строке WKInterfaceTable разворачивается в ноль

Название подводит итог. Я попытался отключить / повторно подключить все IBOutlets. Вот код моего InterfaceController, в котором я настроил таблицу WKInterfaceTable:

func setupLoadingTable () {
    self.myTable.setNumberOfRows(1, withRowType:"universalRowID")

    for (var i = 0; i<self.myTable.numberOfRows; i++){
        var row = self.myTable.rowControllerAtIndex(i) as! UniversalRowView
        row.mainTitle.setText("Hello world") //THIS THROWS AN ERROR
    }
}

Вот код для моего UniversalRowView, который является моим собственным классом строк:

import WatchKit

class UniversalRowView: NSObject {

    @IBOutlet weak var mainTitle: WKInterfaceLabel!
    @IBOutlet weak var subTitle: WKInterfaceLabel!

}

IBOutlets для таблицы правильно подключен. Строка на раскадровке установлена ​​на тип UniversalRowView, и розетки для обеих меток правильно подключены.

Линия:

row.mainTitle.setText("Hello world")

выдает следующую ошибку: "фатальная ошибка: неожиданно найден ноль при развертывании необязательного значения"

Кроме того, когда я закомментирую этот код, я не вижу стандартных WKInterfaceLabels на симуляторе, как они появляются на раскадровке. Я чувствую, что это тоже ошибка, но я не знаю, что с этим делать.

Редактировать: вызов setupLoadingTable() в willActivate()

2 ответа

Решение

Я понял! Кажется, что в представлении WKInterfaceTable и WKInterfaceLabel есть атрибут, который называется "38mm Installed". Проблема была в том, что я запускал симулятор на 42 мм, но я проверил только 38 мм.

После того как я проверил оба атрибута, все заработало как запланировано!

Вот скриншот того, что я имею в виду:

У меня была та же проблема, и для меня это было потому, что я назвал IBOutlet для моего WKInterfaceLabel title который, как выясняется, также является именем метода в NSObject.

Другие вопросы по тегам