スライダーがあり、いくつかの関数でその値を変更したいと考えています。私はこのようなもので試しました:
(builder componentAt: #SliderR) widget model setValue: 124.
しかし、うまくいきません。(値は変更されましたが、マーカーは同じ位置に残ります)。
スライダーがあり、いくつかの関数でその値を変更したいと考えています。私はこのようなもので試しました:
(builder componentAt: #SliderR) widget model setValue: 124.
しかし、うまくいきません。(値は変更されましたが、マーカーは同じ位置に残ります)。
setValue: の代わりに value: を試してください:
この ValueHolder にアクセスする呪文は、非常に長く壊れやすいようです。このようなコードは、明確なメッセージ セレクターの下に必ずラップしてください。または、アプリケーションのインスタンス変数でこの状態を共有することを考えてみてください...
通常、UIPainter でキャンバスにスライダーを追加し、GUI Painter ツール ウィンドウでアスペクト名を入力します。そのウィンドウのツールバーの 2 番目のボタンは「定義」と呼ばれます。そこをクリックして、スライダーの値で ValueHolder を返すメソッドを作成します。次に #value: を使用して実行時に ValueHolder の値を変更すると、スライダーの値が更新され、再描画されます。
いくつかの背景について: ValueHolders は値を保持し、他のオブジェクトはそれに依存するものとして登録して、値が変更されたときに通知を受けることができます。これが UI の機能であるため、ValueHolder を更新すると、UI が自動的に更新されます。