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.