Я новичок в какао. У меня есть приложение какао, которое содержит NSTableView с текстовым столбцом и поле предварительного просмотра NSTextView, которое показывает текст выбранной строки.
- Я не использую привязки
- Делегат и источник данных установлены правильно
- В таблице используется NSMutableArray из MyObject's
Теперь я могу успешно добавлять или удалять строки. Я могу изменить выделение, и соответствующий выделенный текст появляется в UITextView.
Проблема: как только я использую NSTextView для изменения / редактирования значения любой строки / столбца, NSTableView мешает моему NSMutableArray и показывает неверные данные. После этого изменение выбора показывает разные состояния в табличном представлении. Смотрите прикрепленные снимки экрана.
Состояние 1: (Отображение заполненных данных)
Состояние 2: (выбор строки изменен)
Состояние 3: (выбор строки изменен)
Состояние 4: (собирается редактировать значение!)
Состояние 5: (выделение / выбор строки № 1)
Состояние 6: (выделение / выбор строки № 2)
Я использую следующий метод для получения обновленного значения из UITextView:
- (void)textDidEndEditing:(NSNotification *)notification {
id sender = [notification object];
NSString * theString = [sender string];
NSInteger selectedRow = [_myTableView selectedRow];
if (selectedRow < 0 || selectedRow > [_myArray count] - 1) return;
MyObject *rowObject = [_myArray objectAtIndex:selectedRow];
rowObject.text = theString;
// Update table
[_myTableView reloadData];
}
Я пытался реализовать обходной путь для явной ошибки перезагрузки в NSTableView, но у меня это не работает:
- (void)tableViewSelectionIsChanging:(NSNotification *)notification {
if ([notification object] == _myTableView) {
[_myTableView noteNumberOfRowsChanged];
}
}
Я ценю любую помощь в определении источника проблемы.