5

私は Cocoa バインディング (Mac の Objective-C のように) を使用して、値トランスフォーマーを使用して相対的な日付値を表示しています。つまり、NSValueTransformerサブクラスはNSDateインスタンスを変換して、 NSString「3 秒前」、「2 分前」などの相対日付を表示します。

ご覧のとおり、これらの表示された値は時間の経過とともに古くなるため、何らかの方法で更新する必要があります。値トランスフォーマーが再実行され、正しい相対日付が表示されるように、タイマーを使用してバインディングを強制的に更新する必要があることはわかっています。

しかし問題は、これらのバインディングを作成して値を更新するにはどうすればよいかということです。

4

2 に答える 2

5

バインディングを使用している場合は、次の条件を満たしていれば GUI が更新されます。

  • メインスレッドで値を更新しています (そのため、GUI 時にバインディングを更新できます)
  • セッターを使用して値を更新しています

そのため、オブジェクトのプロパティに値がバインドされている場合は、foo.zot必ず[foo setZot: @"new value"]メイン スレッドで呼び出す (または を使用してプロパティを設定するfoo.zot=@"new value") 必要があります。

于 2013-03-18T15:45:31.743 に答える