問題タブ [property-observer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
11 に答える
220085 参照

swift - SwiftのwillSetとdidSetの目的は何ですか?

Swift には、C# と非常によく似たプロパティ宣言構文があります。

ただし、アクションもありwillSetます。didSetこれらは、セッターが呼び出される前と後にそれぞれ呼び出されます。セッター内に同じコードを入れることができることを考えると、それらの目的は何ですか?

0 投票する
5 に答える
49555 参照

swift - プロパティ オブザーバー willSet および didSet; プロパティのゲッターとセッター

プロパティ内でこれを操作する場合、 -とwillSet-の違いは何ですか?didSetgetset

私の観点からは、どちらもプロパティの値を設定できます。いつ、なぜ、willSet- didSet、いつget-を使用する必要がありsetますか?

との構造は次のようにwillSetなりdidSetます。

0 投票する
2 に答える
173 参照

swift - 文字列変数を設定して常に小文字にするにはどうすればよいですか?

文字列変数を設定し、常に小文字にしたいと考えています。

これは私のコードです:

しかし、私がそれを使用すると、無限ループに陥ります。どうすればこの問題を解決できますか?

0 投票する
1 に答える
2536 参照

java - Javaには、SwiftのwillSetおよびdidSetメソッドに似たプロパティオブザーバーがありますか?

変数の値が変更されたかどうかを観察したい。Javaに SwiftwillSetanddidSetメソッドに相当するものがあるかどうか疑問に思っていましたか?

0 投票する
1 に答える
417 参照

ios - フレームではなく境界に対して機能するプロパティオブザーバー

私はこのプロジェクトに取り組んでおり、ストーリーボードに 1 つのシーンがあります。

シーンは TableViewController です。

  • テーブル ビューにはカスタム プロトタイプ セルがあります (CustomCell.swift にリンクされています)。

    • プロトタイプ セル内には、ラベルとカスタム UIView (CustomView.swift にリンク) があります。これらの要素には、プロトタイプ セルの contentView に関連するレイアウトの制約があります。

ここで、ビューのサイズが変更されたときにカスタム ビューに描画されているものを変更して、デバイスが回転したときにその新しいセル幅に調整されるようにします。制約により、デバイスが回転した後に CustomCell のサイズが変更されると、CustomView のフレームが変更されます。これを検出するために、2 つのプロパティ オブザーバーを CustomView.swift に追加しました。

プロジェクトを実行しているときに、デバイスを回転させると、2 番目のオブザーバーが正常に動作します。最初の観察者はしません。私の質問は、最初のオブザーバーがフレームが変更されたことを検出しないのはなぜですか?

0 投票する
0 に答える
58 参照

ios - このコードは、クリックされたときにボタンの背景色をどのように変更しますか?

この投稿から取得した次のコードは、ボタンを押すとボタンの色が変わると思われます。

しかし、「強調表示された」変数も何に対応するのだろうと思っていましたか?

次のようにプログラムでビューにボタンを追加した場合:

これをどのように動作させるのexampleButtonですか?

0 投票する
0 に答える
23 参照

swift - プロパティオブザーバーはヒットしませんが、値が変化しています

アプリ全体で変化しているように見える変数があります。最初に値をtrueに変更してから印刷すると、それがfalse、false、false、true、false、false、falseであり、観察されたプロパティがヒットしたため、「変更されました!」と表示されます。コンソールに表示されます。

ただし、後でこれを再度印刷すると、値が何も変更されていないにもかかわらず(私が見ることができる)、プロパティオブザーバーがヒットしていないにもかかわらず、falseに戻りました。「変更されました」とは出力されませんが、コンソールでは false、false、false、false、false、false、false と出力されます。

どんな助けでも大歓迎です。