1

私のココアアプリにはNSTableView(10.7ライオンビューベースのテーブルビュー)が1つの列のみを含み、そのセルはカスタムNSTableCellViewであり、複数のビューがあり、そのうちの1つはNSImageViewです。

私のデータモデルには整数のステータス変数があります。ココアバインディングとNSValueTransformerを使用して、このNSImageViewに異なるNSImageを提供します。

問題は、画像が自動的に更新されないことです。ステータスが変更された後、画像はリストをリロードした後の変更のみを反映します。

助けてくれてありがとう:)

4

1 に答える 1

0

最後に、私は自分の質問を解決しました。

モデルの「ステータス」整数プロパティのオブザーバーを追加しました。このステータスが変更されると、実際のテーブル セルのアイコン (NSImageView) は cocoa バインディングに従って変更されましたが、更新されませんでした。次に、observe コールバック メソッドに追加します。

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
Model *m = (Model*)context;
NSInteger idx = [self.modelArray indexOfObject:m];
NSTableRowView *row = [self.tableView rowViewAtRow:idx makeIfNecessary:NO];
ListCellItem *cell = [row viewAtColumn:0];
cell.icon.needsDisplay = YES;
[cell.icon.image recache];
[cell.icon display];
}

その後、ステータスが変更されるとすぐに画像が更新されます。

于 2011-10-07T06:15:28.303 に答える