0

時計アプリの簡単な例を作成しようとしています: ラベルとボタンです。ボタンを押すと、ラベルのテキストが変わります。

@IBOutlet var myLabel: WKInterfaceLabel!
@IBOutlet var myButton: WKInterfaceButton!

スクリーンショットに示すように、シミュレーターでアプリを実行すると、次のコードにより無限の回転ホイールが発生します。

@IBAction func sampleFunc() {
        myLabel.setText("hello world")
        myButton.setTitle("hermes")
}

ここに画像の説明を入力

覚えておいてください。アプリが読み込まれません。ボタンやラベルを見ることはありません。この回転する白い点の輪にとどまります。

しかし、まったく同じコードを使用してラベルをコメントアウトするだけで、時計アプリが読み込まれて正常に実行されます。

@IBAction func sampleFunc() {
        //myLabel.setText("hello world")
        myButton.setTitle("hermes")
}

結果:

ここに画像の説明を入力

ボタンをクリックすると、意図したとおりに「hermes」に変わります。

ここに画像の説明を入力

なぜこれが起こるのでしょうか?私はこれを理解しようとして、4 時間もここに座っていました。ラベルは IBOutlet として接続されます。プロジェクトをクリーンアップしました。XCode をシャットダウンし、コンピューター全体を再起動しました。私は最初から 2 番目のプロジェクトを作成しました。すべて同じです。このラベルのコメントを外したままにしておくことができないのはなぜですか? ボタンのアクションでラベルがコメント解除されている場合、アプリがロードされないのはなぜですか? 追加情報: コメントなしのラベルを willActivate() メソッドなどの他の場所に配置しても、アプリが読み込まれないのと同じように動作します。

4

1 に答える 1

0

良い!これについて数時間の断固とした努力の後、StackOverflow に質問を投稿するプロセスだけで、答えに気付くことができました。いくつかの例で目の隅に気づきましたが、実際に重要だとは思っていませんでした. 私は「弱い」と言っています。答えは単純に、WKInterfaceLabel ラベルを弱くする必要があるということです。私は次のようにvarを宣言していましたが:

@IBOutlet var myLabel: WKInterfaceLabel!

私は実際にこれを行う必要がありました(「弱い」ことに注意してください):

@IBOutlet weak var myLabel: WKInterfaceLabel!

Swift の例として、この Apple Swiftのドキュメント ページの一番上にあるのをたまたま見つけました。

やってみたところ、うまくいきました!

于 2015-06-06T00:01:36.390 に答える