привязка какао к NSImageView в столбце NSTableView не обновляется автоматически - PullRequest
1 голос
/ 06 октября 2011

В моем приложении какао есть NSTableView (табличное представление, основанное на 10.7 левом представлении), которое содержит только один столбец, ячейка в нем - это пользовательский NSTableCellView, в нем есть несколько представлений, и одно из них - NSImageView.

Моя модель данных имеет целочисленную переменную состояния, я использую привязку какао и NSValueTransformer, чтобы дать различный NSImage этому NSImageView.

Проблема в том, что изображение не обновляется автоматически.После изменения статуса изображение отражает только изменение после перезагрузки списка.

Спасибо за любую помощь:)

1 Ответ

0 голосов
/ 07 октября 2011

Наконец я решил свой собственный вопрос.

Я добавил наблюдателя для целочисленного свойства модели status.Когда это состояние изменилось, значок фактической ячейки таблицы (NSImageView) изменился в соответствии с привязкой какао, но не обновился.Затем в методе обратного вызова наблюдения просто добавьте

- (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];
}

Затем изображение будет обновлено, как только будет изменен статус.

...