Привязка к ячейке NSTextField не работает, отредактированное значение сбрасывается к значению по умолчанию

Я работаю над приложением документов Core Data, которое динамически создает NSTableColumns, Тип ячейки данных может быть флажком, ползунком и т. Д. Работает программная привязка ко всем типам ячеек, кроме NSTextFieldCell,

Все NSTextFieldCells не удается связать, и после редактирования они возвращаются к своему значению по умолчанию. Это происходит независимо от того, связаны ли они со строкой, числом (с NSNumberFormatter применяется), или дата (NSDateFormatter применяется). Я использую следующий формат, чтобы сделать все привязки:

NSDictionary *textFieldOpts = [NSDictionary dictionaryWithObjectsAndKeys:@"YES", NSContinuouslyUpdatesValueBindingOption, @"YES", NSValidatesImmediatelyBindingOption, nil];
[aCell bind:@"value" toObject:[[entryAC arrangedObjects] objectAtIndex:0] withKeyPath:@"numberData" options:textFieldOpts];

Опять же, эти операторы работают, если тип ячейки не является NSTextFieldCell,

Я бросил в -observeValueForKeyPath метод для регистрации, когда значение изменяется... и для других типов ячеек (NSSliderCell например) я вижу изменение значения, но с NSTextFieldCellНикогда, никогда не обновляет.

1 ответ

Оказывается, мне нужно было реализовать метод источника данных NSTableView setObjectValue, чтобы вручную получить изменение из NSTableView (View), а затем вручную установить данные в контроллере массива (Model), как показано в коде ниже:

- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex {
    [[[entryAC arrangedObjects] objectAtIndex:rowIndex] setValue:(NSNumber *)anObject forKey:@"numberData"];
}

По какой-то причине привязки к NSTextFieldCells, когда они устанавливаются программно для каждой ячейки, работают только одним способом: отображать только данные. Лично я бы классифицировал это как ошибку...

Другие вопросы по тегам