1

タイトルはそれを要約しています。すべてのIBOutletsを切断/再接続しようとしました。WKInterfaceTable を設定する InterfaceController のコードは次のとおりです。

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 が正しく接続されている。Storyboard の行はタイプ UniversalRowView に設定され、両方のラベルのアウトレットが適切に接続されています。

この線:

row.mainTitle.setText("Hello world")

次のエラーをスローします: 「致命的なエラー: オプション値のラップ解除中に予期せず nil が見つかりました」

また、そのコードをコメントアウトすると、ストーリーボードに表示されるストック WKInterfaceLabels がシミュレーターに表示されません。これもエラーのように感じますが、どうすればよいかわかりません。

編集: willActivate() で setupLoadingTable() を呼び出す

4

2 に答える 2

6

私はそれを考え出した!WKInterfaceTable と WKInterfaceLabel の両方のビューに「38mm Installed」という属性があるようです。問題は、シミュレーターを 42mm で実行していたのに、38mm しかチェックしていなかったことです。

両方の属性を確認すると、すべてが計画どおりに機能しました!

これが私が言及しているもののスクリーンショットです:

ここに画像の説明を入力

于 2015-07-03T07:06:14.953 に答える