Редактирование столбца NSTableView с автоматическим обновлением таблицы

У меня есть NSTable, который обновляется каждые 5 секунд новыми данными. Теперь мне нужно добавить новый столбец для редактирования, который может редактировать пользователь. В первый раз, когда он работает, столбец редактирования становится недоступным для редактирования, когда таблица обновляется через 5 секунд.

До сих пор, например, я начал редактировать столбец и писать длинный текст, но сразу после 5 секунд таблица обновилась, и весь текст исчез.

Как справиться с этой ситуацией? Одним из решений может быть остановка обновления таблицы, когда она находится в режиме редактирования. Пожалуйста, предложите.

С уважением, депутат.


person M P    schedule 06.06.2014    source источник


Ответы (1)


Используйте методы, которые перезагружают данные только для определенных строк/столбцов и обновляют все ячейки, кроме той, которую вы редактируете.

Таким образом, вы должны использовать tableView:shouldEditTableColumn:row:, чтобы определить, когда ячейка начинает редактирование. Затем вы будете отслеживать этот столбец и эту строку как текущую редактируемую строку и столбец.

Затем вы должны использовать reloadDataForRowIndexes:columnIndexes: для перезагрузки всех индексов строк/столбцов, кроме того, который соответствует редактируемой в данный момент ячейке.

person atomkirk    schedule 06.06.2014
comment
Спасибо за ответ, но как я узнаю, что эта строка находится в режиме редактирования и мне не следует ее обновлять. Я имею в виду, есть ли такой метод, как shouldRefreshRowAtIndexPath:? Я знаю, что у меня может быть индекс строки, используя метод shouldEditTableColumn. - person M P; 06.06.2014
comment
Спасибо за разъяснение. Итак, вы имеете в виду, что вместо reloadData я должен использовать reloadDataForRowIndexes: (NSIndexSet *) rowIndexes columnIndexes: (NSIndexSet *) columnIndexes этот метод в случае режима редактирования. - person M P; 06.06.2014
comment
точно, таким образом вы не будете мешать текущей редактируемой ячейке, теряя текст, введенный пользователем. - person atomkirk; 06.06.2014
comment
Да, я думаю, это сработает, но в моем источнике данных таблицы могут быть новые строки в наборе данных через 5 секунд, поэтому я думаю, что индекс будет автоматически изменен при включении сортировки, и это испортит индексы строк. - person M P; 07.06.2014