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")

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

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

Изменить: вызов setupLoadingTable() в willActivate()


person JustAnotherCoder    schedule 03.07.2015    source источник


Ответы (2)


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

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

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

введите здесь описание изображения

person JustAnotherCoder    schedule 03.07.2015

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

person borisgolovnev    schedule 17.04.2017
comment
Я сталкиваюсь с тем же. Однако я не понимаю, почему заголовок как свойство не подходит, когда есть метод заголовка? Насколько мне известно, метод title — это func title(for: ABPerson!, identifier: String!), который нельзя спутать со свойством title. - person Owen Zhao; 28.07.2018